DEVS EX MACHINA
¡¡EL AUDIO-VIDEO!!
EN
DEVS EX MACHINA
EL CONCEPTO MAS AVANZADO
EN JUEGOS PARA TU MSX
¡SIENTATE ANTE TU MSX
CONECTA LA BANDA SONORA
Y VIAJA HACIA EL FUTURO...!
¡LA AUDIO-VIDEO AVENTURA
MAS ALUCINANTE JAMAS
CREADA...!
Mariano Cubi. 4 Entio. Tel. 218 34 00 - 08006 Barcelona
¡FELICIDADES!
Este número doble que tenéis
en vuestras manos es de gran sig-
nificación para todos nosotros. El
representa la culminación de dos
años de permanente contacto en
el que nosotros, como editores, y
vosotros, como lectores, hemos
aprendido a conocernos.
Si echamos la mirada atrás y
comparamos el primer número
con éste constataremos cuánto
hemos evolucionado y en qué me-
dida hemos ido incorporando
vuestras sugerencias a fin de que
MSX EXTRA sea una verdadera
revista interactiva.
Ahora, al culminar el segundo
año de permanente contacto con
vosotros nos congratulamos de
que forméis parte de nuestro
equipo.
En este sentido, en ocasión de
brindar con vosotros, nuestros
queridos lectores, os anunciamos
importantes cambios en la revis-
ta. Cambios que redundarán, ob-
viamente, en beneñcio vuestro,ya
que abordaremos con mayor pro-
fundidad todo lo relacionado con
el MSX-2 a la par que aumentare-
mos el número de páginas, entre
otros aspectos.
Procuraremos que las transfor-
maciones no sean traumáticas,
pues de ser así traicionaríamos el
espíritu de la pubhcación. La idea
es que al igual que el estándar
MSX, esta pubhcación no sólo sea
útil para el usuario doméstico
sino también COMPATIBLE con
las aplicaciones de la oñcinaydel
colegio.
Mientras ese primer número
de 1987 llega, recibid todos nues-
tro agradecimiento por la gran
confianza que durante estos dos
últimos años nos habéis dispen-
sado, junto al deseo de felicidad y
prosperidad para estas Navida-
des y Año Nuevo.
MANHATTAN TRANSFER, SJL
SUMARIO
AÑO II N.° 25-26 DICIEMBRE 1986
P.V.F. 350 ptas. (Incluido IVA
y sobretasa aérea Canarias)
Los días 15 de cada mes*
HÍPUT /OUTPUT
Las entradas y salidas a las consultas de nuestros lectores
LA FUERZA DEL MSX-2
Analizamos el Philips NMS-8250 y destacamos su potencia gráfica
CALLVI
Ventanas de texto en Screen 2 es el tema de la sexta entrega de Cali
MSXDISK
Abordamos un tema muy interesante sobre el lenguale
de disco del MSX
GIROMATICA
Un modo sorprendente de trabajar con gráficos. La giromática
es un método nuevo y original
NUEVO MODELO DE LA
1. a GENERACIONAL
Sanyo nos presenta su MPC-200 y nosotros lo analizamos
PROGRAMAS
- Brujerías
- Busca la pareja
- Graflc
- Cuatro
-Golf
-Tiro
DEL HARD AL SOFT
En el capítulo 19 de esta sección se abordan las memorias del MSX
BIT BIT
Comentarios sobre los últimos juegos MSX
EN PANTALLA
Las novedades más importantes del mundo del MSX
RUTINAS DE ENTRADAS DE DATOS
Profundizamos en un aspecto muy importante de la programación
INDICE 1986 66
Indice temático y detallado de todos los programas editados en el curso de este año
4
10
14
19
24
26
28
37
39
41
43
48
51
54
58
62
MSX EXTRA E8 EDITADA POR MANHATTAN TRANSFER, SJL
Director Editorial: Antonio Tello Salvatierra.
Director Ejecutivo: Birgitta Sandberg.
Redactor Jefe: Javier Guerrero. Redactores: Claudia T. Helbling,
Silvestre Fernández y Rubén Jiménez. Colaboradores: Angel Toribio,
Feo. Jesús Viceyra, Joaquín López. Departamento de programación:
Juan C. González. Diseño: Félix Llanos. Grafismo: Juan Núñez,
Caries Rubio. Suscripciones: Silvia Soler. Redacción, Administración y
Publicidad: Roca i Batlle, 10-12. 08023 Barcelona. Tel. (93) 211 22 56.
Fotomecánica y Fotocomposiclón: Ungraf, 8 A. Pujadas, 77-79. 08008 Barcelona.
Imprime: Qrefol. Políg. II Lafuensanta Pare. 1 Móstoles (Madrid)
Distribuya: GME, 8 A. Plaza de Castilla 3, 18.° E. 2. 28046 Madrid
Todo el material editado es propiedad de Manhattan Transfer. 8_A_
Prohibida la reproducción total o parcial sin la debida autorización escrita.
MODEM MSX:
Me gustaría que me dieran
información sobre dónde pue-
do encontrar un modem para
MSX.
José Montrós
TARRAGONA
En la mayoría de ¡os MSX no
se puede conectar directamen-
te un acoplador acústico (ya
que supongo que te referirás a
un acoplador acústico al ha-
blar de modem ). Para conectar
un acoplador acústico a los
MSX debes, en primer lugar,
conseguir un ínter faz RS-232,
que es el que permite las trans-
misiones en serie. Es a este in-
terfaz al que puedes conectar
el acoplador acústico, que no
ha de ser MSX, ya que, como en
las impresoras, el ínter faz RS-
232 te permite conectar cual-
quiera de los existentes en el
mercado.
Por ejemplo, puedes conec-
tar el acoplador acústico co-
mercializado por General
Electrics modelo 3-8200.
Vamos a comentar la dife-
rencia entre los modemsy los
acopladores acústicos, ya que
el confundirlos es un error
m uy generalizado.
Los acopladores acústicos
son unos aparatos que reciben
sonidos, como los del cassette,
por medio de la línea teléfoni-
ca. Esta es la razón por la que
se conecta el auricular del telé-
fono al acoplador acústico. En
cambio, los modems transmi-
ten por modulación como las
ondas de radio, sirviéndose
también de la linea telefónica.
Los modems no se conectan al
aparato del teléfono sino di-
rectamente a la línea telefóni-
ca, y en España sólo pueden
ser instalados por la compa-
ñía telefónica o alguna de sus
filiales.
IMPRESORA PLOTTER:
Un amigo tiene una PLOT-
TER PRINTER HX-P570 de
Toshiba y sólo consigue impri-
mir textos utilizando LPRINT
y LLIST. Nos gustaría también
imprimir dibujos. Creemos
que tiene que estar relaciona-
do con la instrucción OPEN
"LPT:" pero no sabemos utili-
zarla.
Carlos Rioja
BURGOS
Para conseguir generar grá-
ficos con una impresora plot-
ter debes hacerlo por medio de
secuencias de escape. Debes
consultar el manual de la im-
presora para encontrar la ta-
bla de las secuencias de escape
operativas en esa impresora.
Los comandos gráñcos serán,
por tanto, de la forma
LPRINT CHR$( 27);
"—"; "123,346"
Siento decirte que no tiene
nada que ver con la instruc-
ción OPEN "LPT:"; pero te ase-
guro que trataremos esta ins-
trucción dentro del curso de
BASIC: EL BASIC PASO A
PASO.
COMPATIBILIDAD DE LOS
JUECOS:
Tengo un SVT-738 y me han
dicho que los juegos como
Alien-8, Knight Lore, Gunfight
o Nightshade no sirven para
el. ¿Es cierto?
Antonio Javier Guerra
Las Palmas de G.C.
Evidentemente se trata de
rumores sin fundamento, ya
que los programas comercia-
les, y más en concreto los de
ULTIMATE (caso que estás ci-
tando) corren perfectamente
en todos los ordenadores de la
norma MSX que tengan sufi-
ciente memoria. Podemos ase-
gurarte, que estos programas
corren perfectamente en los
ordenadores SVI-738, ya que
los hemos probado personal-
mente.
Puede ocurrir que copias pi-
ratas de estos programas no
corran en ciertas maquinas.
Esto se debe a que los piratas
se dedican a hacer copias cha-
puceras, sin verificar que cum-
plan las normas de compatibi-
lidad establecidas por la nor-
ma MSX.
En el caso de los originales
no tengas ningún miedo. Fun-
cionan perfectamente.
GESTION DE MEMORIA EN
LOSMSX-2
He comprado un MSX-2 del
que estoy muy contento. Cuan-
do intento cargar programas
para 64 Kb de los MSX-1 no
puedo hacerlo si no anulo la
unidad de disco, con lo que lue-
go no puedo grabar el progra-
ma en ella. ¿Qué puedo hacer?
Puesto que la memoria RAM
de mi ordenador es de 128 Kb y
gasta 4 Kb en el disquette y me
deja Ubres 24. ¿Qué hace con
los 100 restantes?
¿Es posible que para los
MSX-2 salgan juegos tipo
«Dragon's Lair» que incorpo-
ren película de dibujos anima-
dos y que sus gráficos sean
como los de las máquinas de
cinco duros?
Manuel Martínez
Esplugues de Uobregat
Esta pregunta (me reñero a
la primera) se la hacen la gran
mayoría de los usuarios de
unidades de disco. En realidad
el problema radica en lo más
profundo del ordenador: el mi-
croprocesador. El Z-80 sólo
puede trabajar con 64 Kb de
memoria. Para aplicaciones
profesionales se ideó un siste-
ma que permitía trabajar con
una mayor cantidad de memo-
ria: el sistema de bancos. La
memoria de los MSX se divide
asi en bancos, de modo que
pueden llegar a ocupar 1024
Kb de memoria. El mayor in-
conveniente de este sistema de
explotación es que no es acce-
sible desde el BASIC. Es decir,
en BASIC sólo puede trabajar
con 64 Kb. De éstos, 32 Kb los
utiliza él mismo para poder
funcionar, y son los 32 Kb de
ROM, otros 4 Kb son utilizados
para almacenar las variables
internas del BASIC y los gan-
chos de la ROM, y por último
otros 4Kb son utilizados por la
unidad de disco si ésta está co-
nectada. Resultado: 24 Kb de
RAM. Lamentablemente debo
informarte de que no hay solu-
ción posible por el momento,
aunque estamos trabajando en
un programa de paginación
automática que solucionará
este problema.
Respecto ala última pregun-
ta la respuesta es sí. Los MSX-
2, con su revolucionaria capa-
cidad gráfica permite la reali-
zación de animaciones y de
gráficos de gran definición.
Por lo tanto, que aparezcan
programas como los que tú co-
mentas es solo cuestión de
tiempo; y esperemos que poco.
BORRADO DE LINEAS:
Para borrar una linea de un
programa es suficiente con te-
clear el número de dicha linea
y luego pulsar RETURN. Pero
¿y si quiero borrar desde la lí-
nea 20 por ejemplo hasta la lí-
nea 130? ¿cómo lo hago si es
que se puede?
Agustí Company
BARCELONA
Como tú bien dices, para bo-
rrar una línea de un programa
basta con escribir su n úmeroy
a continuación pulsar RE-
TURN Para borrar un bloque
de líneas debes utilizar el co-
mando DELETE. Este comando
funciona de las siguientes for-
mas:
DELETE xxxx-yyyy borrará
todas las líneas comprendidas
entre la xxxxy la yyyy, ambas
inclusive. Siguiendo con tu
propio ejemplo haríamos DE-
LETE 20-130.
DELETE -xxxx borrará to-
das las líneas del programa
que tengan un número de línea
menor o Igual que xxxx. Si qui-
sieras borrar desde el princi-
pio de tu programa hasta la U-
nea 130 (inclusive) harías
DELETE -130.
CON GARANTIA
QUINIELAS 1X2
Les pedí la cinta de QUINIE-
LAS; pero, después de' entrar
todos los datos la quiniela se
realiza al azar, es decir, que no
tiene en cuenta la estadística
de los datos entrados. Esto es
lo que me ha dado el programa
y aclárenmelo si estoy equivo-
cado.
Miguel Loaano CAlicante)
Tu pregunta nos sorprende,
ya que la explicación a tu pre-
gunta se encuentra especifica-
da con claridad en la carátula
del cassette de quinielas. En la
pantalla del cálculo de la qui-
niela aparecen dos opciones:
MANUAL y AUTOMATICO. La
quiniela se realizará aleatoria-
mente (lo cual puede ser inte-
resante para quinielas con
4
Output
/ i / . /
X'PRESS MSX-2:
Les ruego me indiquen la
diferencia que existe entre
un Spectravideo SVI-738
(X'press) y un Philips 8235
( MSX-2). ¿Pueden los MSX-1
transformarse en MSX-2 me-
diante alguna ampliación?
Antonio Plaza de Diego
MADRID
En primer lugar, la diferen-
cia entre el SVI-738 y cual-
quier modelo de la segunda ge-
neración es clara: el SVIno es
de la segunda generación. Esto
quiere decir que no goza de las
ampliaciones propias del
MSX-2, en cuanto a gráficos,
por ejemplo. Sin embargo, den-
tro de los MSX de primera ge-
neración, el SVI- 738 ofrece las
mejores características, ya
que lleva incorporada la uni-
dad de disco, así como la tarje-
ta de 80 columnas (muy im-
portante en las actividades
profesionales) y el interfaz se-
rie RS-232, lo que permite que
se puede comunicar con otros
ordenadores (sean o no del es-
tándar )ein tercam biar datos y
programas. Es, sin lugar a du-
das, un MSX-1 marcadamente
profesional; pero que no tiene
las capacidades gráficas ni el
BASIC ampliado de los MSX-2.
Aparentemente sí podrían
convertirse los MSX-1 en
MSX-2 ( no de forma sencilla ).
Para realizar esta conversión
se deberían sustituir los chips
de la ROM del BASIC y del VDP
(Procesador de la pantalla de
Video) por los utilizados por
los MSX-2, así como insertar
nuevos chips de memoriay tal
vez realizar algunas otras mo-
dificaciones internas. Eviden-
temente no se trata de un pro-
ceso simple (como insertar un
cartucho y ya está); pero no
descartamos que se llegue a
realizar en el futuro. Por el mo-
mento no sabemos de ninguna
empresa que realice este paso
de MSX- la MSX-2.
partidos extranjeros o de los
cuales no tengamos suficien-
tes datos como para elaborar
la estadística) siempre que,
tras tomar la segunda opción
respondas 20 a la pregunta del
número de boletos a rellenar.
Te recomendamos que leas
detenidamente las instruccio-
nes del programa.
COLUMNAS; COLUMNAS...
¿Hay en el mercado algún
procesador de texto que per-
mita mezclar diferentes tipos
de letra en el texto?
La tarjeta de 80 columnas de
Dynadata, ¿hará compatibles
los programas de la segunda
generación de MSX con los de
la primera? ¿Los procesado-
res de 40 columnas pueden ser
usados con esta tarjeta?
José Antonio López
JAEN
Mezclar diferentes tipos de
letra en un texto no suele ser
problema del procesador de
texto, sino de la impresora. Si
tu impresora admite diferen-
tes tipos de letra en el manual
se te indicarán los códigos (se-
cuencias de escape) corres-
pondientes a cada tipo de letra.
La mayoría de los procesado-
res de texto admiten la entra-
da desde el teclado de estos có-
digos, de modo que pueden mo-
dificar así el tipo de letra del
documento final. En concreto,
ya que estamos trabajando con
él en la redacción, podemos
asegurarte que esta operación
es posible con el programa
Idea-Text de Idealogic.
2P
Evidentemente la tarjeta de
80 columnas no convierte a un
MSX de la primera generación
en un MSX-2, ya que dicha tar-
jeta sólo solven ta una de las di-
ferencias entre ambas genera-
ciones. De este modo, no todos
los programas de la segunda
generación funcionarán con
la tarjeta de 80 columnas; por
ejemplo, los que utilicen algu-
na de las nuevas posibilidades
gráficas de los MSX-2.
Por último, a tu tercera pre-
gunta tenemos que decirte que
sí. Los procesadores de 40 co-
lumnas funcionarán correcta-
mente con la tarjeta de 80 co-
lumnas, aunque no podrán sa-
car partido de ella ya que sólo
representarán en pantalla las
40 columnas usuales.
INDOCUMENTADO
Me he comprado una unidad
de disco CANON, que como sa-
béis adjunta un diskette con el
sistema operativo MSX DOS.
En el momento en que conecto
el sistema y la unidad de disco
me sale MSX DISK BASIC ver-
sión 1.0. Si entonces escribo
CALL SYSTEM me dice Illegal
Function Cali. ¿Está averiado
el ordenador o la unidad de dis-
co? ¿Puede tratarse de un dis-
kette defectuoso?
Alberto Molinero
(Tenerife)
Ni lo uno ni lo otro sino todo
lo contrario. Me parece que el
origen de todos tus problemas
es bastante más profundo que
todo eso. No te alarmes, no es
que sea una avería de nada.
Cuando digo que tu problema
es profundo, me refiero a que
en realidad no es un problema
de aparatos, sino tuyo.
Desgraciadamente hay mu-
chos lectores que envían con-
sultas a esta redacción que po-
drían solucionar fácilmente
con una lectura del manual de
los aparatos que manejan.
Esto provoca a veces proble-
mas de espacio en nuestra re-
vista, ya que contestando a
cuestiones tan evidentes (que
se repiten con mas frecuencia
de la deseada ) nos vemos obli-
gados a «recortar» algunas
otras respuestas que merece-
rían más extensión.
Tranquilízate, tanto tu orde-
nador, como la unidad de disco
como el diskette funcionan
perfectamente. Simplemente
debes colocar el diskette con el
sistema operativo en la unidad
de disco antes de encender el
ordenador. A partir de ese mo-
mento, se cargara el MSX DOS
en el ordenador. Si desde ahí
deseas ir al BASIC, tan sólo de-
bes escribirlo y pulsar RE-
TURN. A partir de ese momen-
to, escribiendo CALL SYSTEM
puedes volver al MSX DOS en
cualquier momento, pero note
olvides de colocar el disco de
sistema en la unidad, puesto
que si no volverás a encontrar-
te con un error.
Te aseguro que todo esto lo
explica el manual. De nada.
5
Input
¡AQUI ESTA EL MEJOR
PROGRAMA DEL AÑO!
Por votación de nuestros lectores el mejor progra-
ma del año 1986 es MONTGOLFIER.
Su autor, Eduard Playa González, ha ganado una
UNIDAD DE DISCOS PHILIPS VY-0010, que le será en-
tregada durante el mes de enero próximo, en nuestra
redacción.
De acuerdo con las bases del
concurso de programación,
los votantes de los programas
que quedaron en primer y se-
gundo lugar, participan en un
sorteo optando a diez premios.
Los agraciados con cartuchos,
cassettes, adaptadores, joys-
ticks, etc. son los siguientes:
— C. Martínez Marín, de
Barcelona.
— Pedro Ferré ir a Morán,
de Madrid.
— Miguel Quintero Ro-
dríguez, de Cádiz.
— Juan María Echava-
rría, de San Sebastián.
— José A. Marín Marín,
de Madrid.
— Rafael Barrio nuevo, de
Madrid.
— Francisco J. Casado, de
San Adrián de Besos.
— Miguel Fernández, de
Barcelona.
— Rubén Castellano, de
Madrid.
— Jorge Juan Ruiz, de Se-
villa.
— Carlos Mijares, de Bil-
bao.
INTERACCION BASIC-
CODIGO MAQUINA
¿Cómo se pueden devolver
valores al BASIC estando estos
en C.M.?
Héctor Martín
TENERIFE
Esta operación de ¡a que nos
cuestionas se puede realizar
de numerosas formas. La más
sencilla es situar los paráme-
tros en una zona de memoria
determinada, y luego obtener-
los desde el BASIC con PEEK.
He aquí un ejemplo:
LDA; xxx; situamos en el acu-
mulador el dato a entregar al
BASIC.
LD (AAAAH), A; situamos en
la dirección de memoria AAAA
el dato.
Output
RET; volvemos al BASIC.
Una vez en BASIC basta con
hacer:
D = PEEK (HAAAA) 'Lee el
dato de la memoria.
Otra forma de hacerlo, mu-
cho más correcta; pero algo
más complicada es devolver
los parámetros como resulta-
do de la función USR. Esto se
consigue situando los datos en
la dirección de memoria utili-
zada por el DAC (acumulador
decimal ). Es decir en las direc-
ciones HF7F6 a HF846. El va-
lor lo retorna directamente la
función USR con la que pone-
mos en marcha el programa
en ensamblador. Así podemos
hacer:
D = USR (O), quedando el valor
en la variable D.
COMO MEDIR LA
MEMORIA
¿Cómo se pueden medir los
Kilobytes de un programa?
¿Está en MSX el juego
«Match Day»?
Iñigo Ibánez
Le joña (VIZCAYA)
Medir los Kb que ocupa un
programa es algo muy senci-
llo. En primer lugar debes sa-
ber cuál es la memoria libre
del ordenador en el momento
de encenderlo. Esto te lo indica
el ordenador cuando lo encien-
des sin necesidad de que hagas
nada en particular. Suponga-
mos que el ordenador marca
28815 bytes free; en ese mo-
mento ten em os 28 Kb libres. Sí
tras escribir el programa, o
cargarlo de la cinta hacemos
PRINT FRE (0) y pulsamos
RETURN, el ordenador mos-
trará la memoria libre. Supon-
gamos que marca 12354. La
memoria ocupada por el pro-
grama no es más que la dife-
rencia entre ambas cantida-
des. En este caso seria 2881 5 -
12354 = 16461. El programa
ocupa, por tanto 16461 bytes;
unos 16 Kb aproximadamen-
te.
Si el programa está en códi-
go máquina la tarea resulta un
poco más complicada. Sí tienes
conocimientos en este lengua-
je podrás obtener las direccio-
nes inicial y final del progra-
ma, cuya diferencia te dará la
memoria ocupada por el pro-
grama.
Acerca de tu segunda pre-
gunta he de decirte que no
existe, por lo que nosotros sa-
bemos, ninguna versión del
(sigue)
W ^ nuevo )
CON GARANTIA
/VWHATW TRANSFB?SA
VAMPIRE. Ayuda al audaz Guillermo a salir
del castillo del Vampiro, sorteando murcié-
lagos, fantasmas, etc. Un juego terrorífica-
mente entretenido para que lo pases de mie-
do. PVP.800Pts.
e NUEVO
COPY
POR JOAQUIN LOPEZ
Menú» por varita ñas - tras
formatos ae coplas < simulación
en blanco y nafro - copia
sprltaa redoflne colores
compatible con cualquier
impresora matrlclal.
CON GARANTIA
/WíWnAN TRANSFERSA
HARD CCPY. Para copiar pantallas. Tres
formatos de copias, simulación porblancoy
negro, copia sprítes, redefinic. de colores,
compatible con todas las impresoras ma-
tric.PVP. 2.500 Pts.
6
NVEN msxclub
KRYPTON. La bataüa mas audaz de las gala- D BOOT. Sensacional juego de simulación QUINIELAS. El mas completo programa de SNAKE. Entretenido y muy divertido juego
xias en cuatro pantallas y cuatro niveles de submarina en la que tienes que demostrar tu quinielas con estadística de la liga, de los en el que Snake procura comer unos nume-
dificultad- Un juego cuya popularidad es cada pericia como capitán de un poderoso subma- aciertos, etc. e impresión de boletos. Acertar ros que la engordan. Tanto las murallas que
vez mas grande entre los usuarios del MSX. riño de guerra. Panel de mandos, sonar, tor- no siempre es cuestión de suerte PVP 700 la rodean como su larga cola pueden ser
PVP 500 Ptas. pedos, etc. PVP. 700 Ptas. Ptas. mortales para ella PVP 600 Ptas
EL SECRETO DE LA PIRAMIDE. Atrevido STAR RUNNER. Conviértete en el audaz FLOPPY, El Preguntón Un verdadero desafio hjatj jtqx Un héroe solitario es lanzado a
juego de aventuras a través de los misterios piloto interestelar y lucha a muerte, a a tus conocimientos de Geografía e Historia mí carrera a vida o muerte por un desierto
y peligros que encierran los laberínticos pa- través del hiperespacio, contra las defen- española Floppy no perdona y te costara plagado de peligros Conseguir el combusti
sillos de una pirámide egipcia. ¡Atrévete si sa s del tirano Daurus Dos pantallas y mucho superarlo PVP 1 000 Ptas ble para sobrevivir es su misión D-ezn.veles
puedes! PVP. 700 Ptas. cinco niveles de dificultad. PVP. 1 000 pts de dificultad PVP 1 000 pts.
Si quieres recibir por correo certificado estas cassettes garantizadas recorta o copia este boletín y envíalo hoy mismo:
r~Ñombre y apellidos
Dirección:
»: ...
| Población:
□ KRYPTON Ptas. 500-
I □ UBOOT Ptas. 700-
I □ QUINIELAS Ptas. 700-
□ HARDC0PY Ptas3«0-
joastos de envió certificado por cada cassette ....
CP Prov.
□ SNAKE Ptas. 600-
□ EL SECRETO DE LA PIRAMIDE Ptas. 700-
□ STAR RUNNER Ptas. 1.000-
Ptas. 70 -Remito talón bancario de Ptas
... Tel.:
□ FLOPPY PVP. 1.000 Ptas.
□ MAD FOX PVP. 1.000 Ptas.
□ VAMPIRO PVP. 800 Ptas
a la orden de Manhattan Transfer, SA
ATENCION: Los suscriptores tienen un descuento del 10% sobre el precio de cada cassette.
IMPORTANTE: Indicar en el sobre MSX CLUB DE CASSETTES. ROCA I BATLLE, 10-12 BAJOS. 08023 BARCELONA
Para evitar demoras en la entrega es imprescindible indicar nuestro nuevo código postal.
NUESTRAS CASSETTES NO SE VENDEN EN QUIOSCOS. LA UNICA FORMA DE ADQUIRIRLAS ES SOLICITAMELAS
A NUESTRA REDACCION. ¡NO SE ADMITE CONTRA REEMBOLSO!
Input
programa Match Day; pero
existen otros programas de
fútbol de gran calidad, como
son «Fútbol» de Philips en for-
mato cassette y con un precio
de 1800 ptas y el «Fútbol» de
Konami, en cartucho y con un
precio que ronda las 5. 000 pts.
SALIR AL DOS
He realizado un programa
en BASIC y código máquina y
lo tengo grabado en disco. Se
que es posible crear un fichero
en el DOS que me ejecute el
programa (no sé cómo hacer-
lo) pero también querría que
una vez finalizado el progra-
ma me volviera al DOS. ¿Cómo
hacerlo?
Pedro Fuentes
(Segovia)
Me imagino que debes refe-
rirte a un sistema para que
cuando cargues el disco en el
ordenador (al conectar el sis-
tema) se ejecute el programa.
Para ello, debes crear un fi-
chero batch. Para queseautoe-
jecute el programa debes lla-
mar al fíchero AUTOE-
XEC.BAT, pero procura sólo te-
ner un autoexec por disco.
Para que una vez ejecutado
el programa vuelva la DOS, la
solución es tan evidente que te
hará enrojecer. Solo tienes que
colocar la instrucción CALL
SYSTEM donde deba finalizar
el programa y automática-
mente volverás al sistema ope-
rativo.
PIRATERIA
CHAPUCERA:
Hemos recibido numerosas
cartas de usuarios que, con
tremenda sorpresa por su par-
te, nos comentan errores de
carga en ciertos programas
que hacen que el ordenador se
quede colgado ( «ñipado» en el
argot informático). En todos
los casos que hemos estudiado
esto se debe a una única causa.
Los programas en que se nos
comentan estos errores son
copias PIRATAS de cartuchos.
Estos cartuchos son pasados,
de forma ilegal, del formato de
cartucho al formato cinta por
ciertos PIRATAS CHAPUCE-
ROS que ni tan siquiera cono-
cen el ordenador en que están
trabajando.
Debéis saber que los ordena-
dores MSX, siendo compati-
bles entre si a nivel de soft y
hard no son iguales interna-
mente. Evidentemente, las di-
ferencias entre aparatos tan
parecidos no pueden ser muy
grandes. Asi todos utilizan los
mismos chips, periféricos,
etc.; pero no ocurre lo mismo
con los ports de entrada y sali-
Output
da, ni con el tratamiento pagi-
nado de la memoria, que se di-
ferencian de un MSX a otro.
Estos piratas de los que ha-
blamos no tienen en cuenta es-
tas diferencias, ya que no las
conocen, ni saben cómo evitar-
las, como hacen los progra-
mas originales en cartucho.
Por esta razón, un programa
que carga perfectamente en el
ordenador de un pirata puede
no hacerlo en el vuestro. Ya
hemos comentado en numero-
sas ocasiones que con la pira-
tería salen perdiendo los usua-
rios.
Aquellos a los que los pro-
gramas no os funcionen, sien-
do esta la causa (copias pira-
tas de cartuchos ), no os pode-
mos recomendar otra cosa
sino que intentéis que el pirata
os retorne el valor de los pro-
gramas y compréis un origi-
nal, con todas las garantías: y
a todos aquellos que pensaseis
caer en las garras de un pirata,
pensáoslo dos veces.
Una única recomendación:
dirigios a los programas origi-
nales pues son los únicos que
os pueden dar una garantía de
funcionamiento.
ÍTlasier
Computer^.
CREADOR DE SOFTWARE * STANDARD Y A
MEDIDA * PROGRAMAS MSX
EN DISCO
EN CINTA
CONTABILIDAD + I.V.A
Adaptada al Plan Gral. Contable.
GESTION DE INVENTARIOS
Control de almacén, entradas, salidas, por distin-
tos conceptos, listados, etc.
BASE DE DATOS
Permite crear ficheros, opción de cargar, grabar,
listar, seleccionar, consultar, totalizar, modificar,
salida de etiquetas...
STAT PAC (estadística)
Cálculo estadístico básico: media varianza, des-
viación con gráficos de funciones, regresiones li-
neales, exponenciales, logarítmicas y polinómi-
cas.
I.V.A.
Programa para el control del libro de compras,
ventas v gastos, con relación a la declaración de
I.V.A..
BASE DE DATOS
Crea ficheros, los modifica, lista, selecciona, saca
etiquetas, etc.
TRADUCTOR DE IDIOMAS
Permite la traducción entre dos idiomas, cuales-
quiera que sean.
ECUACIONES LINEALES
Resuelve cualquier sistema de ecuaciones de has-
ta 10 incógnitas.
LOTO
Lotería primitiva con estadísticas y reducidos.
PARA APRENDER
BASIC
Este libro es el resultado de la experiencia en las
aulas de su autor. Constituye una gran ayuda pa-
ra el estudiante y el autodidacta.
DE MAILING
¡NOS APLICAMOS A SER UTILES!
A TRAVES DE MSX ClUE DE MAIL1NC PUEDES ADOUIRIR
BASIC TUTOR IDEALOGIC
ADAPTADORES TARJETAS]
INTELIGENTES
BEE CARD Y SOFTCARD
'•«He*
ocup«
••pació
t/
Deja el manual de lado, inserta este breviario de
BASIC en cartucho v olvídate. No ocupa memoria.
PVP 3.500 pts.
Note quedes
al margen
y disfruta
de las tarjetas
inteligentes.
Lo último
en soft.
PVP 2.850 pts
VJJJIIII,,...
I
I
ENVIA HOY MISMO ESTE CUPON
Nombre y apellidos
Dirección
Población CP Prov Tel
□ Tutor Basic Ptas. 3.500 - □ Adaptador Bee Card Ptas. 2.850 - □ Adaptador Softcard Ptas. 2.850 -
□ Sweet Acorn Ptas. 5.200- □ Backgammon Ras. 5.200- □ Shark Hunter Ptas. 5.200-
□ Barn Stormer Ptas. 5.200- □ Chock'n Pop Ptas. 5.200- □ Le Mans 2 Ptas. 5.200 -
Gastos de envío por cada producto 100 - pts. Remito talón bancario de pts. a la orden de Manhattan
Transfer, S.A. Enviar a MSX CLUB de MAILING, Roca i Batlle 10-12 bajos - 08023 Barcelona.
J
PHILIPS NMS 8250
La nueva generación de ordenadores MSX 2 lanzada por PHILIPS dentro de su gama NMS, conjuga óptimamente las
prestaciones domésticas de los aparatos con las características más profesionales. Un claro exponente de esta gama
NMS (New Media Systems) es el ordenador de segunda generáción que pasamos a comentar seguidamente: El PHI-
LIPS NMS 8250.
El NMS 8250 es algo más que un
ordenador doméstico de la se-
gunda generación. La idea que
ha estado presente en todo momento
para llevar a cabo el desarrollo de este
equipo ha sido algo más que la preten-
sión de crear un equipo más destinado a
una línea de consumo doméstico. En
realidad se trata de un completísimo sis-
tema de posibilidades para la gestión in-
tegrada: PHILIPS siempre está un paso
más allá.
ASPECTO DEL EQUIPO
Ultimamente, todos los fabricantes de
la norma esmeran de una manera extre-
mada tanto el diseño de los aparatos
como la construcción de teclados y aca-
bado de los equipos.
Pues bien, PHILIPS -a este nivel- no
se limita a ser un fabricante más, sino
que por derecho propio se sitúa a la ca-
beza del resto de fabricantes de equipos
del estándar; como queda bien patente,
en el aparato que nos ocupa.
El computador NMS 8250 está com-
puesto -como viene siendo habitual-
por dos módulos separados: Unidad
central, donde se aloja la circuitería, la
unidad de disco y conexiones de entra-
da/salida y Teclado.
UNIDAD CENTRAL Y TECLADO
La unidad central, auténtico corazón
del equipo, como queda dicho constitu-
ye un módulo independiente donde se
alojan (además del microprocesador y
el resto de la circuitería) todas las ranu-
ras y conexiones que hacen posible que
el ordenador pueda comunicarse con el
exterior.
Esta unidad central es un elegante
módulo rectangular de un color gris me-
tálico de una altura aproximada de unos
8 cm. donde los componentes externos
se integran de una manera armónica y
agradable.
En su parte frontal están ubicados de
izquierda a derecha los siguientes ele-
mentos;
- Botón de alimentación del sistema
con el correspondiente LED indicador
de operacón.
-Espacio destinado a la incorpora-
ción de una segunda unidad de diskette.
- Boca de la unidad principal de dis-
kette con el correspondiente indicador
LED de funcionamiento.
- En el extremo derecho, y bajo la
10
boca de la unidad de diskettes principal
se encuentra el botón de RESET, con un
tamaño suficientemente grande como
para que el usuario no se vuelva loco in-
tentando encontrarlo.
En la parte lateral derecha de esta
unidad central se encuentran los dos zó-
calos para las ranuras de cartucho real-
zadas en negro.
La parte trasera contiene la mayoría
de conexiones para periféricos.
En la hilera superior, de izquierda a
derecha se encuentran todas las rela-
cionadas con Audio/Vídeo, que son las
siguientes:
-Conexión de antena de TV UHF
PAL (canal 36). Inmediatamente a la de-
recha de esta conexión se encuentra un
pequeño orificio donde está alojado un
pequeño tornillo que sirve para poder
ajusfar la sintonía (previsión por lo de-
más muy útil)
ESPECIFICACIONES TECNICAS DEL KMS 8250
- Conexión de luminancia.
- Conectores Vídeo/Audio ¡n.
- Conector RGB Vídeo/Audio out.
En la hilera inferior, también de iz-
quierda a derecha, hallamos las siguien-
tes conexiones:
- Toma de cassette.
- Ports de joystick 1 y 2.
- Salida para impresora Centronics.
- Conector de teclado.
El otro módulo del NMS 8250 es el te-
clado, de tipo QWERTY, de 73 teclas er-
gonómicas realzadas en gris. Además
de las habituales teclas de función y de
cursor, incorpora en su lado derecho so-
bre los cursores un teclado numérico o
separado, que como hemos repetido y
repetiremos, agiliza enormemente la in-
troducción de datos numéricos en apli-
caciones de gestión.
Unidad
RAM
ROM
Unidad central de vfdeo
Representación de
video
Colores
Objetos móviles
(sprites)
Unidad central de audio
Capacidad de sonido
Reloj
Z-80A, 3,7579545 MHz
256 KB (128 KB vídeo, 128 KB usuario)
64 KB (48 KB para MSX-2, 1 6 KB para control de FDD
y BASIC)
Texto: 80x24 ó 40 por 24;
Caracterers gráficos: 512x212,
256x212 pixel con entrelazado
256 colores distintos, o 16 colores cualesquiera de
un total de 51 2.
Un máximo de 256, hasta 8 en cada línea
S-3527 (compatible con el AY-3-8910 en MSX-1 )
8 octavas, acordes de 3 tonos
Mes, semana, día, hora, minuto, segundo, con pila
auxiliar
TECLADO
Modelo
Teclado de recorrido completo, con un ángulo de
ajuste de 5-12°, contorno cóncavo con teclas
esculpidas
Número de teclas
Indicadores
73
Alimentación (rojo), mayúsculas (verde), FDD en
ejecución (amarillo)
CONEXIONES
Compartimentos de ampliación MSX-2, en su parte superior y posterior.
Interface para impresora Centronics (en paralelo)
Monitor Euroconector (SCART) para RGB/CVBS, y conector
DIN para CVBS/luminancia
TV Conector RF (canal 36 de UHF)
Otros conectores Lectograbadora de datos. Segunda unidad de discos
(externa) 2 entradas/salidas para control manual,
«ratón» o tableta gráfica
UNIDAD DE DISCOS PARA FLOPPY DISK
lo 3,5 pulgadas, simple cara y doble densidad
idad de memoria 720 KB (formateada) p/discos 1 MB.
AUMENTACION
220 V ca, 50 hz; consumo 25 W
CONDICIONES AMBIENTALES
CARACTERISTICAS TECNICAS
En cuanto a las características de ín-
dole técnica de este aparato, hemos de
decir que cumple con los requerimientos
máximos en cuanto a memoria.
Esto es, que la RAM del aparato es de
128 Kb, incorporando asimismo una
RAM de vídeo (VRAM) de 128 Kb más.
La memoria ROM es a su vez de 64 Kb.
Esta capacidad de memoria permite
trabajar al equipo en 9 modos de panta-
1 1
lia (SCREEN O a SCREEN 8), que son la
totalidad de modos previstos para la se-
gunda generación mientras que aque-
llos equipos que sólo disponen de una
VRAM de 64 Kb sólo pueden trabajar de
SCREEN a SCREEN 5.
La memoria de vídeo de este equipo,
lo faculta pues para trabajar en un am-
plio ámbito que comprende desde el tra-
bajo en modo de texto en 40 u 80 colum-
nas hasta en un modo gráfico de
512x212 puntos.
La unidad de diskettes que incorpora
este equipo es de doble cara/doble den-
sidad, lo que faculta al aparato para tra-
bajar con diskettes (de 3,5") de alta ca-
pacidad, pudiendo gestionar hasta 720
Kb de información una vez formateados
(1 Mb sin formatear).
GESTION INCORPORADA
Hemos dicho en el encabezamiento
de esta sección que el equipo que nos
ocupa es un sistema integrado de posi-
bilidades para la gestión.
Junto con el equipo, se suministra un
paquete de gestión que justifica sobra-
damente lo dicho. Desde un único siste-
ma, con el NMS 8250 nos es posible ac-
ceder a un procesador de textos, un
gestor de base de datos, una hoja de
cálculo y un programa de tratamiento de
gráficos; todo ello combinado con una
agenda personal, un programa de plani-
ficación de proyectos y una calculadora;
en resumen, un completísimo paquete
integrado de gestión que como queda
patente tiene en cuenta absolutamente
todos los detalles y que es capaz de so-
lucionar todas las exigencias ya no sólo
de un usuario doméstico, sino también
las de un pequeño empresario.
De hecho, el mayor atractivo de este
paquete es la facilidad con la que el
usuario puede manejar de forma inte-
rada e interrelacionada programas que
abitualmente vienen presentados de
forma independiente, con lo que se evita
-entre otros- el desagradable problema
de tener que introducir dos veces el mis-
mo dato, lo que -lógicamente- genera
múltiples problemas de transcripción.
CONCLUSIONES
Como queda visto, este equipo de la
segunda generación reúne todas las
ventajas del estándar, y junto con el pa-
quete integrado de gestión que incorpo-
ra, el potentísimo BASIC MSX y los sis-
temas operativos DISK BASIC y MSX
DOS, este equipo se convierte en el
ideal para todos aquellos usuarios que
deseen introducirse en el amplísimo
mundo de la informática de la mano de
un equipo que les va a permitir potenciar
todas sus capacidades creativas amén
de posibilitarles disponer de una impor-
tante y potente herramienta capaz de
ayudarles a gestionar desde la econo-
mía doméstica hasta la organización de
su pequeña empresa.
Además de la garantía que supone la
marca PHILIPS, debe tenerse en cuenta
la excelente relación entre la calidad y el
precio de este producto, además de la
eficacia y rapidez de su servicio técnico;
es importante al adquirir un equipo tener
en cuenta la asistencia post-venta, y te-
nemos la seguridad de que PHILIPS
nunca desatiende a sus clientes.
9 h
SERNñ
EUROPA
KONAMI TE PRESENTA EL EXITO MAS SONADO EN TODA EUROPA.
ÜNA VEZ INTRODUCIDO EN EL CUARTEL GENERAL, ESCAPA DE LAS BOMBAS, MORTEROS
Y DEMAS ATAQUES PARA LOGRAR LIBERAR A TUS COMPAÑEROS
. PRESTA ATENCION A PROXIMAS NOTICIAS
SERMA. C/. CARDENAL BELLUGA, 21. 28028 MADRID. TELS. 256 21 01/02
12
3.° GRAN
PROGRAMA
(89
CONCURSO
DEL AÑO
CREA IT ENVIANOS TU PROGRAMA.
HAY PREMIOS PARA TI Y PARA LOS QUE
TE VOTEN. CADA MES PURIFICAREMOS
MAS DE UN GANADOR QUE OPTARA
UNA FABULOSA UNIDAD DE DISCO
BASES
1 - Podrán participar todos nuestros lec-
tores cualquiera sea su edad, con uno
o más programas escritos en BASIC
MSX o código Máquina.
2 - Los programas se clasificarán en tres
categorías:
A — Educativos
B — Gestión
C — Entretenimientos
3 - Los programas, sin excepción, debe-
rán ser remitidos grabados en casset-
te virgen, debidamente protegida den-
tro de su estuche plástico en el que se
insertará el cupón-etiqueta que apa-
rece en esta misma página, debida-
mente rellenado.
CORTAR. O r OTO COPIAR
I
4 - No entrarán en concurso aquellos
programas plagiados o ya publicados
en otras publicaciones nacionales o
extranjeras.
5 - Junto a los programas se incluirán
en hoja aparte las instrucciones co-
rrespondientes, detalle de las varia-
bles, ampliaciones o mejoras posibles
y todos aquellos comentarios que el
autor considere de interés.
6 - Todos los programas han de estar es-
tructurados de modo claro, separando
con REM los distintos apartados del
mismo.
PREMIOS
7 - MSX EXTRA otorgará los siguientes
1
TITULO
CATEGORIA
PARA K
INSTRUCCION DE CARGA
AUTOR:
EDAD:
CALLE: N.°
CIUDAD DP TEL.:
N.° DE RECEPCION
L
premios:
AL PROGRAMA MSX EXTRA DEL
AÑO
Una Unidad de disco
valorada en más de 80.000 ptas.
8 - Los programas seleccionados por
nuestro Departamento de Programa-
ción y publicados en cada número de
nuestra revista recibirán los siguien-
tes premios en metálico:
Programa Educativo 10.000 pts.
Programa de Gestión 10.000 pts.
Programa de Entretenimiento
6.000 pts.
9 - MSX EXTRA se reserva el derecho de
publicar mera de concurso aquellos
programas de reducidas dimensiones
que sean de interés, premiando a sus
autores.
FALLO Y JURADO
10 - Nuestro Departamento de Programa-
ción analizará todos los programas
recibidos y hará la primera selección,
de la que saldrán los programas que
publiquemos en cada número de MSX
EXTRA.
11 - Los programas recibidos no se devol-
verán, salvo que el autor lo requiera
expresamente.
12 - La elección del PROGRAMA MSX EX-
TRA DEL AÑO se hará por votación de
nuestros lectores a través de un bole-
tín que se publicará en el mes de octu-
bre de 1987.
13 - El plazo de entrega de los programas
finaliza el 15 de noviembre de 1987.
14 - El fallo se dará a conocer en el núme-
ro del mes de enero de 1988, entre-
gándose los premios el mismo mes.
REMITIRA:
CONCURSO MSX
EXTRA
RocaiBatUe, 10-12
bajos
08023 Barcelona
CALLVI
VENTANAS DE TEXTO
EN SCREEN 2
Emplear la pantalla de gráficos para escribir textos suele implicar una falta de velocidad y de recursos a la hora de
seleccionar los colores, así como la limitación que suponen los 32 caracteres por línea. Aquí encontrarás el método
para escapar de las restricciones del BASIC en este aspecto.
En ciertas aplicaciones es conve-
niente escribir caracteres en
SCREEN 2. Tal podría ser el
caso de una base de datos que repre-
sentara una ficha en la pantalla, un
menú multicolor o, simplemente, un pro-
grama de aventuras en el que fuera ne-
cesario mostrar algún texto. El sistema
clásico para imprimir caracteres en
SCREEN 2 no es otro que abrir un fiche-
ro, dando «GRP:» como distintivo de
nombre. Una vez efectuada la instruc-
ción OPEN correspondiente, sólo hay
que mandar los mensajes con algo pa-
recido a PRINT#1 (o el número de fi-
chero abierto para el cometido). Los pro
blemas que esto plantea son tres: la
poca velocidad de impresión, la imposi-
bilidad de seleccionar el color del fondo
y la falta de las 40 columnas de
SCREEN 0.
ESCAPAR A LAS LIMITACIONES DEL
BASIC
El motivo de que se den las tres limita-
ciones anteriores es en realidad válido
para todas ellas: la lentitud del BASIC.
En efecto, es posible escribir en
SCREEN 2 con más de 32 columnas, di-
bujando un carácter y moviendo el punto
de referencia (LP) dos pixels a la izquier-
da (usando PRESET, PSET, DRAW,
etc.), aunque, a decir verdad, el tiempo
que tardaría el BASIC en hacer todo
esto sería larguísimo. Por otra parte, es-
cribir texto con unos colores de primer
plano y de fondo diferentes a los del res-
to de la pantalla también es factible si se
emplea una instrucción LINE combina-
da con una orden COLOR. Sin embar-
go, una vez más el tiempo empleado en
el proceso haría imposible su utiliza-
ción.
A continuación encontrarás una pe-
queña rutina que escribe un mensaje en
la pantalla siguiendo el método clásico,
consistente en abrir un fichero con
OPEN. Te recomiendo que la teclees
para hacerte una idea de la velocidad
empleada en imprimir el mensaje 24 ve-
ces (todas las líneas de la pantalla). Na-
turalmente el texto aparecerá con el es-
paciado característico de las 32 colum-
nas por línea y el color del fondo será el
mismo que el de f
LISTADO 1
10 ' BASIC
20 SCREEN2
30 PSET(0,0)
40 OPENWASl
50 TIME=0
55 A$="HENSAJE DE PRUEBA"
60 F0RX=0T023
70 PRINTil.AI
80 NEXT
90 T=TIHE
100 SCREEN0
110 PRINT-TIEílPO-T/50's-
42 COLUMNAS POR LINEA
Pasemos ahora a describir una rutina
capaz de abrir una «ventana» de texto
en la pantalla gráfica. Con ella, podrás
escapar de las 32 columnas por línea y
llegar al máximo posible sin redefinir los
caracteres, es decir, empleando un ma-
triz de 6 x 8. Asimismo, el color de la tinta
y del fondo podrá ser prefijado a volun-
tad. Aquí tienes su listado en ASSEM-
BLER.
LISTADO 2
10 CQ0R1:
EQU
IC350
20 C00R2:
EQU
#C352
30 COLOR:
EQU
IC354
40 SBIT:
EQU
IC3S5
50 posgrp:
EQU
IC357
60
ORG
IC360
70
EX
DE, HL
80
INC
HL
90
LO
E, (HL)
100
INC
HL
110
LD
0,(HL)
120
LO
HL,(C00R1)
130
LO
BC , (C00R2)
UO
LD
A, (COLOR)
150 ;
170 rutven:
180
190
200
210
220
230
240
250
260
270
280
290
300
310 8000:
320
330
340
350
360 ;
370 ;
380 RUTINC:
390
400
410
420
430
440 ;
480 ;
460 rutlin:
470
480
490
500
510
520
530 booi:
540
550
560
570
580
590
600
PU5H AF
EX AF.AF»
POP AF
EX AF, AF '
LO A,B
SUB H
LO B,A
L0 A,C
SUB L
LD C,B
LD B,A
SLA L
SLA L
SLA L
CALL RUTLIN
INC H
DEC C
JR NZ,8000
RET
PUSH DE
LO DE, 3
AD0 HL, DE
POP 0E
LD (POSSRP).HL
RET
PUSH BC
PUSH HL
X0R
LO
LD
LD
LD
LD
QR
JR
INC
CP
JR
A
(SBIT), A
C.A
HL.OUTGRP
(POSGRP) ,HL
A,(0E)
A-
Z.ESC000
DE
13
Z,ESC000
CALL RUTCAR
C
14
¿f^: rtm*^ i hender
mt^I ícente ^ -a^Jiclaar.
a* enturan, *o»*r"-o nu *
fc«j ^íai« al v#cino ?i
cfoncM «ncontr a^f ,^
incl. íjiri valoro*,
lo* f-vafc> i fc-ar-ife*^^ f^Ür
un-as cr i a turM iTl
t i -^n^r-i a#oar^ i »*nc i a *
a. E u a 1 x el acl . * 1 I i
^1 Ultimo Pr a-iío m ar
••^**"*»r* a CUV^ no i
i a a«
1 i ct*r*
620 ESC000:
LO A, 32
630
CALL RUTCAR
640
SLA B
650
SLA 6
660
SLA B
670
LO A,C
680
A00 A , A
690
AD0 A, A
700
A00 A,C
710
A00 A,C
720
SUB B
730
NEG
740
SRL A
750
SRL A
760
SRL A
770
PUSH BC
780
CALL RUTSPC
790
POP BC
800
LO C. B
810
LD B,A
820
POP HL
830
PUSH HL
840
PUSH 0E
850
LD D.H
860
LO E,L
870
LD HL,0UTGRP+8
880
PUSH BC
890
CALL I5C
900
POP BC
910
POP DE
920
POP HL
960
SET 5,H
940
EX AF.AF'
950
CALL 156
960
EX AF.AF'
970
RES 5,H
980
POP BC
990
RET
1000 ;
1010 ;
1020 RUTSfC:
0R A
1030
RET Z
1040
LD C,0
1050
LD HL,íP0S6RP)
1060
CALL RUTINC
1070 8003:
LD 6,8
1080 B002:
LD (HL) ,C
1090
INC HL
1100
DJNZ 8002
1110
DEC A
1120
JR NZ.B003
1130
RET
1140 ;
1150 ;
1160 rutcar:
PUSH HL
1170
PUSH DE
1200
LO
HL,(P0S6RP)
1210
LD
A.(SBIT)
1220
LO
CA
1230
SLA
C
1240
QR
A
1250
CALL NZ, RUTINC
1260
CP
3
1270
JR
NZ,ESC01
1280
LD
A.-l
1290 ESCOl:
INC
A
1300
LD
(SBIT),A
1310
PUSH HL
1320
POP
IX
1330
POP
HL
1340
LD
UH
1350
LD
M
1360
ADO
HL.HL
1370
ADD
HL , HL
1380
ADO
HL.HL
1390
LD
DE, 7103
1400
ADD
HL , DE
1410
EX
DE,HL
1420
LD
6,8
1430 B1000:
LD
A, (DE)
1440
LD
L,A
1450
LD
H,0
1460
1480
PUSH
BC
1490
INC
C
1500 bo:
DEC
C
1510
JR
Z,EXIT
1520
SLA
A
1530
SLA
(IX+8)
1540
ADD
HL, HL
1550
JR
B0
1560 EXIT:
ANO
(IX+0)
1570
0R
H
1580
LD
(IX*0>,A
1590
INC
DE
1600
INC
IX
1610
POP
BC
1620
DJNZ
B1000
1630
POP
BC
1640
POP
DE
1650
POP
HL
1660
RET
1670 0UTGRP:
0EFS
264
FUNCIONAMIENTO DE LA RUTINA
Resultaría muy largo explicar cada
una de las instrucciones que componen
la rutina para manejar ventanas. No
obstante, en síntesis, su funcionamien-
to es el siguiente:
1 R
CALLIV
La rutina RUTVEN es el «tronco» del
programa. Antes de llamarla hay que si-
tuar el vértice superior izquierdo de la
ventana que se va a abrir en e¡ registro
HL, de forma parecida a la instrucción
LOCATE de BASIC; esto es: en H la fila
y en L la columna. Es importante señalar
que las referidas coordenadas están
calculadas para una pantalla dividida en
32 cuadratines horizontales de 8x8 pi-
xels por 24 cuadratines verticales. De
esta forma, la máxima coordenada hori-
zontal a especificar será la 31 . Quizá te
estés preguntando por qué no hacer re-
ferencia a la posición real (un número
del al 41). El motivo no es otro que
aprovechar el método seguido por el
VDP para dividir la pantalla en SCREEN
2, a fin de simplificar notablemente los
cálculos a realizar por la rutina y, por ex-
tensión, acortar su longitud y velocidad
de proceso.
Luego de colocar en HL el citado vérti-
ce superior izquierdo, hay que poner en
BC el extremo inferior derecho para deli-
mitar perfectamente las dimensiones de
la ventana. El formato a utilizar es idénti-
co al citado para HL
Resta sólo indicarle a la rutina qué
mensaje ha de imprimir en la ventana y
qué colores ha de emplear. El registro
DE es el encargado de actuar como
puntero para indicar el texto a visualizar
y el acumulador se usa para indicar los
colores del fondo y de la tinta, en el for-
mato típico del VDP: un dígito para cada
cosa.
La rutina RUTLIN es la que gestiona
una línea de pantalla, llamando a la ruti-
na que dibuja cada carácter (RUTCAR)
y completando el resto con espacios
gracias a RUTSPC.
Como ves el funcionamiento es sim-
ple. La rutina principal (RUTVEN) llama
a RUTLIN tantas veces como líneas ten-
ga la ventana, y ésta, a su vez, completa
la línea con llamadas a RUTCAR y
RUTSPC. Por cierto, RUTLIN dejará de
imprimir caracteres cuando encuentre
un byte a cero. De esta forma, cualquier
mensaje a escribir se dará por termina-
do si lo acabamos con un cero, y el resto
de la ventana será completado con es-
pacios. Una cosa más: el código de re-
torno de carro (o retorno de línea: 13)
provocará que la línea en curso se dé
por terminada y se empiece con la si-
guiente. Los demás códigos de control
del cursor no tienen significado alguno
para la rutina y serán interpretados
como caracteres gráficos.
USO DE LA RUTINA DESDE EL BASIC
Esta rutina puede ser llamada desde
el BASIC, aunque será el programador
en código máquina quien aproveche
mejor sus ventajas. A tal efecto, se ha
previsto que el mensaje a pasar se de-
junto con la llamada, usando algo pare-
cido a PRINT USR («mensaje»). Esto
conlleva una limitación importante: el
mensaje no puede ser mayor de 255 ca-
racteres (los que admite una variable al-
fanumérica). Una posible solución sería
poner el texto en memoria con POKEs y
buscar algún método de apuntar DE ha-
cia el inicio de este «buffer», aunque,
como ya he dicho, esto se hace mucho
mejor desde el código máquina.
Las coordenadas que delimitan la
ventana se deben poner en la memoria
usando POKE. El sistema a seguir es el
siguiente:
POKE &HC3D0, coordenada X del
origen
POKE &HC3D1, coordenada Y del
origen
POKE &HC3D2, coordenada X del fi-
nal
POKE &HC3D3, coordenada Y del fi-
nal
El color ha de ser especificado con:
POKE &HC3D4, tinta*16+fondo.
A continuación tienes el cargador de
línea DATA que pondrá la rutina en me-
moria a partir de la dirección &HC360.
LISIADO 3
10 F0RX=4HC360T04HC44F:READV$
20 POKEX.VAU'iH'+VDlSsS+PEEKU)
30 NEXT
40 IFS029277 ! THENBEEP: CLS: PRINT'HAY UN
ERROR*
50 DAT AEB , 23 , 5E , 23 , 56 , 2 A , 50 , C3 , ED , 4B , 52
,C3,3A,54, C3.F5, 08, Fl, 08,78, 94,47, 79,95
, 48,47, CB, 25, CB, 25, CB, 25, C0,92,C3, 24,00
, 20, F9,C9, 05, 11, 08, 00,19,01, 22,57, C3.C9
,C5,E5,AF,32,55,C3,4F,21,50,C4,22,57,C3
,1A,B7
60 DATA28,OB,13,FE,00,28,06,CO,FC,C3,OC
,18iFl ( 3E,20,C0,FC l C3 f CB,20,CB l 20,CB l 20
,79,87,87,81,81,90,E0,44,CB,3F,CB,3F,CB
,3F,C5,CD,E8,C3,C1,48,47,E1,E5,05,54,50
,21,58,C4,CS,CD,5C,00,C1,D1,E1,C8,EC,08
,CD,56
70 DATAOO,08,CB,AC,C1,C9,B7,C8,OE,00,2A
,57,C3,CD,88,C3,06,08,7i,23,10,FC,30,20
,F7,C9,E5,05,C5,F5,2A,57,C3,3A I 55,C3,4F
,CB,21,B7,C4,88,C3,FE,03,20,02,3E,FF,3C
,32,55,C3,E5,D0,E1,EI,6C,26,00,29,29,29
,li,8F
80 0ATA1B,19,EB,06,08,1A,6F,26,00,3E,FF
,DD,75,O8,C5,0C,0D,28,O9,CB,27,DD,CB,08
,26,29,18,F4,00,A6,00,B4,D0,77,00,13,00
,23,C1,10,DC,C1,01,E1,C9
PROBANDO LA RUTINA
Para comprobar el correcto funciona-
miento de la rutina, sólo has de teclear el
siguiente programa. Cuando hagas
RUN, comprobarás que el tiempo em-
pleado por el BASIC (más de cinco se-
gundos) se ve limitado a algo más de un
segundo. Sin embargo, pensar que la
rutina tarda esta «enormidad» en escri-
bir el mensaje no sería justo. En realidad
la mayor parte del tiempo se la lleva el
bucle FOR/NEXT ayudado por los PO-
KEs de las I íneas 1 20 y 1 30 y por la fun-
ción USR, sin perder de vista al interrup,
que no deja de pedirnos paso cada 1/50
LISTADO 4
10 ' CH
20 SCREEN2
30 DEFUSR=iHC360
40 D=iHC350
50 PQKED,0:P0KED+1,0
60 POKED+2,14 :PQKE0*3,1
70 PQKED+4.ÍHF1
80 A*=' MENSAJE DE PRUEBA'
90 TIHE=0
100 FQRX=OT023
110 PRINTUSR(A$+CHR$(0))
120 P0KED*1,PEEK(D*1)+1
130 PQKED+3,PEEK(D+3)+l
140 NEXT
150 T=TIME
160 SCREEN0
ir
segundos. La rutina emplea menos de
cuatro décimas de segundo en comple-
tar su cometido, y eso en el peor de los
casos, es decir: cuando la ventana ocu-
pa toda la pantalla.
CONCLUSIONES
La rutina tiene una longitud de 256 by-
tes y emplea un buffer de 264 bytes para
contener la línea que se está procesan-
do en ese momento. Esto has de tenerlo
en cuenta si piensas reubicarla con la
ayuda de un ensamblador.
Por otra parte, no se realizan ningún
tipo de comprobaciones, lo que hace
que un error al pasarle las coordenadas
pueda «colgar» al ordenador. Otro posi-
ble factor de riesgo es mandar un men-
saje sin poner un byte de terminación
(un cero), puesto que se tomarían ca-
racteres de la memoria cuya aparición
en pantalla sería indeseable. También
puede crear trastorno el mandar un
mensaje demasiado largo para la longi-
tud de la línea fijada. En ese caso, el re-
sultado puede ser inesperado, aunque
este pequeño inconveniente se puede
solucionar acortando la linea o interca-
lando un retorno de carro (CHR$(13)).
Por Joaquín López
NUMEROS ATRASADOS • NUMEROS ATRASADOS
WEl ~ *¿ií
man j mon y
mi
MSX 2.' Edición
N." 1,2,3,4 -450 PTAS
MSX 2.' Edición MSX9 1 50 PTAS.
i PTAS.
MSX10 150 PTAS
MSX 11 150 PTAS.
MSX12.13 300 PTAS.
MSX14 160 PTAS
MSX15175 PTAS.
9^
MSX16175 PTAS.
MSX17 175 PTAS.
MSX18 175 PTAS.
MSX19.20 350 PTAS.
TT
\Á
MSX21 175 PTAS.
MSX CODIGO
MAQUINA - 275 PTAS.
MSX22 175 PTAS.
MSX23 175 PTAS.
MSX 24 175 PTAS.
¡LA 1. a REVISTA DE MSX DE ESPAÑA!
i
PARA QUE NO TE QUEDES CON LA COLECCION INCOMPLETA SOLO TIENES QUE ENVIAR HOY
MISMO EL BOLETIN DE PEDIDO CON TUS DATOS PERSONALES A «SUPER JUEGOS EXTRA MSX»
-DPTO. SUSCRIPCIONES CA Roca i Batlle, 10-12, 08023 Barcelona.
| Deseo recibir los números de SUPERJUEGOS EXTRA MSX
para lo cual adjunto talón del Banco n° a la orden de Manhattan Transfer, SJL
Nombre y apellidos
Dirección
Población
DP Prov.
~~ ~~
.. Tel.:
•No se admite contrarreembolso» I
■ ~ = ~ 1 - 1
MSX DISK
En este artículo analizamos las características más importantes del MSX DISK, lenguaje que nos permite trabajar
con unidades de disco del sistema MSX. Por Ferrán Mas.
El MSX DISK BASIC nos permite
trabajar con la unidad de discos
en los microordenadores del sis-
tema MSX. Vamos a analizar algunas
de sus principales características:
Cada diskette es formateado en 80
pistas (0-79) y cada pista a la vez en 9
sectores (0-8), lo que da un total de 720
sectores, si tenemos en cuenta que
cada sector puede almacenar 51 2 bytes
(0,5kb) de ello se deduce que la capaci-
dad máxima del disco es de 360 kbytes.
Las instrucciones DSKI$ y DSKO$
nos permiten acceder a la información
de cualquier sector del disco. Dicha in-
formación es almacenada en una zona
de buffer de 512 bytes del ordenador
cuya dirección de inicio está almacena-
da en las posiciones &HF351-&HF352.
La instrucción FILES nos permite la
visualización del directorio del disco,
para conocer qué programas o ficheros
tenemos grabados.
Organización del Directorio
Cuando grabamos un fichero en el
disco, lo primero que hace el MSX DISK
BASIC es apuntar los datos de dicho fi-
chero en un directorio, para que luego
cuando lo queramos recuperar lo poda-
mos hacer con facilidad. Dicho Directo-
rio siempre empieza en el byte del sec-
tor 5, y llega hasta el byte 51 1 del sector
1 1 . Si tenemos en cuenta que para cada
fichero son necesarios 32 bytes del Di-
rectorio, de ello resulta 7 sectores * 512
bytes = 3.584 bytes / 32 bytes * fichero
= 112 ficheros, que es el número máxi-
mo de ficheros que el directorio puede
almacenar. Si sobrepasamos este nú-
mero nos aparecerá el mensaje TOO
MANY FILES. Veamos como se alma-
cena la información en el ejemplo del Di-
rectorio de un fichero:
00 01 02 03 04 05 06 07 08 09 10 1 1 12
131415
77 83 88 67 76 85 66 32 66 65 00 00 00
00 00 00
MSXCLUB BAS
1617 18 19 20 21 22 23 24 25 26 27 28
29 30 31
00 00 00 00 00 00 00 00 33 08 230 00 21
02 00 00
Posiciones:
0-7 = Se almacena el nombre del fi-
chero en código ASCII (siempre en ma-
yúsculas), si el nombre contiene menos
de 8 letras se almacenan blancos (códi-
go ASCII = 32). En el ejemplo MSX
CLUB.
8-10 = Se almacenan las tres letras
de la raíz del fichero (BAS,COM,SYS,
etc.). En el ejemplo BAS.
1 1 -23 = Esta zona está teóricamente
reservada para funciones de control del
fichero (almacenamiento de Password
para su lectura, retención de la hora de
grabación, visualización en el directorio,
etc.), ya que en la práctica está casi
completamente inutilizada por el MSX
DISK que tan solo utiliza el byte 12 para
mostrar o no el fichero al ejecutar FILES.
Algunas versiones del MSX-DOS utili-
zan más bytes de esta zona, como los
bytes 22 y 23 que se utilizan para el al-
macenamiento de la hora de grabación.
24-25 = Estos 2 bytes contienen la fe-
cha de grabación. Este dato sólo es utili-
zado por el sistema operativo MSX-
DOS pero no por el MSX DISK. La fecha
base es el 1 -1-84 que corresponde a un
almacenamiento 33 8. Si aumentamos
el byte 24 nos va aumentando el día.
Cuando hemos superado el valor, nos
aumenta el mes y así sucesivamente. El
sistema operativo ya calcula con la infor-
mación de los 2 bytes el día correspon-
diente. Así si al byte 24 le damos el valor
65 la fecha resultante será el 1-2-84.
26-27 = Estos 2 bytes nos indican en
qué sector empieza la grabación del fi-
chero. Los ficheros se empiezan a gra-
bar en el sector 1 2, y, para localizar el
sector donde empieza, basta aplicar la
fórmula (n-2)*2+12, siendo n el valor
del byte. Si la posición 26 contiene el va-
lor 230 resultará (230-2)*2+ 12=468;
significando que el fichero está grabado
a partir del sector 468.
28-29 = Estos dos bytes contienen la
longitud del fichero. El primero es el de
peso bajo y el segundo byte el de peso
alto. Ejemplo si los valores son 21 y 2 la
longitud será 21+2*256=533 bytes.
Como sabéis, con 2 bytes no podremos
pasar de 65536, cosa que tampoco es
importante porque la capacidad del or-
denador impide poder tener un fichero
de este tamaño.
30-31 = Son los bytes de separación:
contienen siempre ceros.
-C)- El final del Directorio viene de-
terminado porque el primer byte del si-
guiente fichero es un cero y no un carác-
ter como sería de esperar. Por otro lado
cuando se efectúa la eliminación de un
fichero del disco, no se produce un bo-
rrado de la información almacenada,
sino que el MSX DISK coloca en el pri-
mer byte del nombre del fichero el valor
229, lo que provoca que cuando ejecu-
temos la instrucción FILES se desco-
nozca el fichero que empiece por 229.
Observación del contenido de un
disco
Utilizando los conceptos expuestos
anteriormente y con un pequeño progra-
ma en BASIC podemos observar y pos-
teriormente si deseamos modificar, el
contenido del disco byte a byte.
El programa es el siguiente:
1Q
MSXDISC
Programa 1 A
10 INPUT "indica sector (0-720)";S
20 D$=DSKI$(1,S)
30 A=PEEK (&HF351) + 256*PEEK
(&HF352)
40 FORX=ATOA+511
50 PRINT PEEK(X) ;TAB(20) ;CHR$
(PEEK(X))
60 T=T+ 1 :IF T=20 THEN T=0:G$=
INPUT$(1)
70 NEXT X
Explicación: Como la lectura se hace
sector a sector en la línea 10, le indica-
mos el sector que queremos observar
(si deseamos el Directorio, recordad
que empieza en el sector 5). La instruc-
ción DSKI$, realiza la lectura de un sec-
tor del disco. La sintaxis necesita una
variable -en este caso D$- donde alma-
cenar los datos: 1 indica el Drive del dis-
co (1 =A,2=B,3=C,4=D) (si sólo dispo-
nemos de una unidad de disco corres-
ponderá el valor 1), y S especifica qué
sector queremos leer. En la línea 30,
calculamos en que dirección de la me-
moria se habrá almacenado el sector
que hemos leído. Como ya expuse al
principio se almacena en la dirección
&HF351-&HF352; como el segundo
byte es el de peso alto, hemos de multi-
plicarlo por 256 y sumarlo al de peso
bajo.
En el bucle que empieza en la línea
40, lo que hacemos es leer byte a byte a
partir de la dirección A (que antes he-
mos calculado) los 512 bytes del sector.
En la línea 50 efectuamos la impresión
de los datos. La instrucción PEEK nos
detecta el valor de la posición de memo-
ria indicada, mientras que con el
CHR$(PEEK(X)) hacemos que se nos
escriba el código ASCII del valor, ya que
si existe texto almacenado nos será muy
fácil entender el contenido. De lo contra-
rio, si los datos almacenados no son tex-
tos, difícilmente entenderemos nada. La
línea 60 tiene la función de detener, la
escritura cada 20 caracteres para poder
estudiar más detenidamente. Para con-
tinuar será necesario pulsar una tecla
cada vez.
51 queremos, podemos añadir la línea
35 PRINT B;TAB(10) ;:B=B+1 , que nos
permitirá conocer que posición ocupa
dentro del sector que estamos visuali-
zando.
Modificación del contenido de un
disco
Ya he avanzado anteriormente que a
la vez que podemos visualizar el conte-
nido de un disco, cuando localicemos al-
gún byte que nos interese lo podemos
modificar. Para ello, primero debemos
utilizar el programa 1 A para detectar en
que sector y en que posición se encuen-
tra el byte que queremos modificar. Con
el programa 1 A, si añadís la línea 35, os
será posible identificar el número del
byte, que corresponderá a la posición M.
Una vez sepamos el sector (S) y la po-
sición M, añadiremos al programa 1A
las líneas:
Extensión 1.B
80 POKE A+M,C
0- DSKO$1,S
Explicación: Como la zona de memo-
ria empieza en A (calculada en la línea
30) deberemos añadirle M para coincidir
con la posición a modificar. Con la ayu-
da de la instrucción POKE, colocaremos
el valor que deseemos, indicado por la
variable C. Si queremos cambiar un tex-
to, deberemos utilizar el código ASCII.
Para modificar más de una posición a la
vez podemos emplear varios POKE o un
bucle que utilice variables.
En la línea 90, con la ayuda de la ins-
trucción DSKO$, grabamos los datos al-
macenados, y que posteriormente he-
mos modificado, otra vez en el disco. La
instrucción DSKO$ tiene la sintaxis un
poco diferente de su antónima DSKI$ y
realiza un volcado de la memoria del
sector del disco indicado por S. 1 sigue
siendo el drive del Disco.
Manipulación del Directorio
Una vez hayáis practicado con el pro-
grama 1 A y su extensión 1 B estaréis en
condicione de realizar alguna de las si-
guiente manipulaciones:
- Colocar el final del fichero al princi-
pio, haciendo que el primer byte del
nombre sea 0, con lo que al hacer FILES
no aparecería ningún fichero.
- Modificar el nombre, raíz y d ía de un
programa.
- Hacer que un programa no pueda
ser recuperado porque se le ha variado
el sector de inicio del Directorio.
- Esconder un fichero, colocando 229
en el primer byte o 255 en el 12, con lo
que al hacer FILES no aparecerá, pero
posteriormente volviendo a colocar su
valor nos volverá a aparecer.
- Traducir un programa compilado, y
que no tenemos acceso desde el BA-
SIC.
- Desbloquear un programa en códi-
go máquina.
Realización de un Directorio extenso
La instrucción FILES del MSX DISK a di-
ferencia del DIR del MSX-DOS no nos
da información acerca de la longitud del
fichero ni del día de su grabación. Te-
niendo presente la estructura del Direc-
torio descrita anteriormente, podemos
diseñar, un programa que nos muestre
la longitud y el día de grabación de cada
fichero.
El programa podría ser el siguiente:
10Z=5:FF=0
20 D$=DSKI$(1,Z)
30 A=PEEK(&HF3510)+256*
PEEK(&HF352)
40 FOR X=A TO A+51 1 STEP 32
50 IF PEEK(X)=0 THEN FF=1 :X=
A+512:GOTO 250
60 IF PEEK(X)=229 THEN GOTO
250
70 N$=""
80 FORV=0TO7
90 N$=N$+CHR$(PEEK(X+V))
100NEXTV
110 N$ =N$+"."
120 FOR V=8 TO 10
130 N$=N$+CHR$(PEEK(X+V))
140NEXTV
150 L=PEEK(X+28)+256*PEEK
(X+29)
160 AÑ=0
170 R = PEEK(X+24) + 256*PEEK
(X+25)
180D=R-2080
190M = INT(D/32)
200 DT=D-(M*32)
210MT=M+1
220 IF MT>16 THEN AÑ = INT(MT/
16):MT=MT-(16*AÑ)
230 AT=84+AÑ
240 PRINT N$;TAB(11) ;L;TAB(18)
;DT;TAB(20); "-";TAB(21) ;MT¡
TAB(23) ;AT
250 NEXT X
260 IFFF=0ORZ<11 THEN
Z=Z+1:GOTO 20
Explicación: El Directorio como recor-
daréis empieza en el sector 5, por ello
empezamos la lectura por este sector. A
la vez inicializamos FF que utilizaremos
como bandera. En la línea 40 iniciamos
el bucle de lectura, teniendo presente
que para cada fichero utiliza 32 bytes,
de tal manera que cada paso de bucle
se nos colocará en la primera posición
del siguiente fichero. En la línea 50 lee-
mos con ayuda del PEEK, el primer byte
para ver si existe un cero, lo que indica-
ría que sería el final del Directorio. En
caso de ser así, utilizamos la variable FF
como bandera y la colocamos a 1 para
luego en la línea 250 poder detectar el fi-
nal del Directorio y terminar. Si hemos
llegado al final del Directorio conviene
no continuar el bucle, para ello hacemos
que la X supere el valor final con lo que
al ejecutar el NEXT se detendrá el bucle.
La línea 60 la podéis eliminar. Lo que
ocurrirá en este caso es que también os
listará los ficheros borrados que son
aquéllos cuyo primer byte es el 229. En
la línea 70 inicializamos la variable del
nombre del fichero. El bucle que va de la
80 a la 100 nos va leyendo las ocho pri-
meras posiciones, que es donde se en-
cuentra el nombre del fichero y nos
transforma el valor a código ASCII para
tener el texto. La línea 1 1 añade el pun-
to. En el bucle de la 1 20 a la 1 40 leemos
la raíz que juntamos al nombre del fiche-
ro. En la línea 150 calculamos la longi-
tud del fichero; dicha longitud recorda-
réis se halla sobre dos bytes: el primer
byte es el de peso bajo y el segundo el
de peso alto, por ello lo multiplicamos
por 256.
De las líneas 1 60 a la 230 calculamos
la fecha de grabación: en primer lugar
inicializamos a el incremento de años,
a continuación como la fecha se halla
sobre 2 bytes en las posiciones 24 y 25
calculamos dicho valor. El sistema para
calcular la fecha toma como base el 1 -1 -
84. que equivale a los valores 33 y 8 en
los bytes 24 y 25 respectivamente.
Como 33 y 8 equivale a 2081 , en la línea
1 80 efectuamos la resta utilizando 2080
que equivale al día inicial 0.R equivale a
la diferencia de días, pero ahora será
necesario traducirla a días, meses y
años. El sistema calcula los meses so-
bre la base de 32 días, por ello cada 32
días incrementa un mes. Esto, lo calcu-
lamos en la línea 190, en la 200 averi-
guamos los días que sobran de la divi-
sión y que no llegarán al mes entero; por
ello DT serán los días del mes. Una vez
sepamos los meses enteros, puede que
hayan pasado años. Aquí el sistema cal-
cula los años sobre la base de 16, pre-
viamente hemos sumado 1 a los meses
debido a que su valor inicial (1-1-84) es.
uno. Aquí hacemos el mismo procedi-
miento que para los días. Para terminar,
como el valor inicial de los años es 84, lo
tendremos que añadir a AÑ.
Hemos de tener en cuenta que si mo-
dificamos la información del disco a
nuestro albedrío puede que obtenga-
mos fechas incorrectas.
En la línea 260. si no hemos llegado ni
al final del Directorio ni al sector 12. in-
crementa un sector y continúa el proce-
so.
Si alguno de los ficheros ha sido gra-
bado utilizando alguna versión de MSX-
DOS que tenga implementada la reten-
ción horario, podríamos hacer también
aparecer la misma en pantalla Para
ello, deberíamos añadir las siguientes
instrucciones:
241 S = PEEK(X + 22) + 256*PEEK
(X+23)
242 MT=INT(S/32)
243H = INT(MT/64)
244M = MT-(H*64)
245IFH = 0THENH-12
246IFH>12THENH = H-12.T$="p"
else t$="a"
247 PRINT H;":' ;M;T$
Explicación Como ya hemos mencio-
nado anteriormente, la retención noraria
se hace sobre los bytes 22-23. Por ello,
en primer lugar, calcularnos ?! valor nu-
mérico de estos bytes. El sistema utiliza
cada 32 unidades como 1 minuto; en
consecuencia MT serán ios minutos. Al
igual que con la fecha, tendremos que
pasar los minutos totales a horas y mi-
nutos. En la linea 243 calculamos las
horas sabiendo que el sistema utiliza la
base de 1 hora cada 64 minutos, en la lí-
nea 244 calculamos los minutos que no
llegan a la hora.
En caso de que no haya transcurrido
ninguna hora, inicializamos las horas a
12, ya que la hora de referencia base
son las 1 2:00a. A continuación observa-
mos si hemos superado las 1 2 horas, ya
que la representación la hacemos sobre
1 2 horas. Por ello, en caso afirmativo, le
restamos 12 y asignamos la p horaria.
En caso contrario, le asignamos la a. En
la línea 247 realizamos la escritura. Es
conveniente añadir un ";" al final de la lí-
nea 240 para que no salte de línea y nos
quede ordenado.
Directorio visible y Directorio
enmascarado
Con un pequeño programa podemos
conseguir esconder cualquier fichero
del Directorio a la vez que podemos con-
21
MSX DISC
seguir que vuelva a aparecer. Para ello
utilizamos el byte 1 1 del Directorio de
cada fichero y convertimos su valor nor-
mal en 255.
10 INPUT'QUIERES
DIRECTORIO
VISIBLE (V) O
ENMASCARADO (E)?";0$
20 IF 0$<>"V" ANDO$o"v"
AND 0$<>"E" AND 0$<>"e"
THEN GOTO 10
30 IF 0$="V" OR 0$="v" THEN
GOSUB1000 ELSE G=1 :
GOSUB 170
40 LOCATE 5,20:INPUT"INDICA.
NOMBRE Y RAIZ DEL
FICHERO"; N$
50 FOR L=1 TO LEN(N$)
60IFMID$(N$,L,1)="." THEN
P=L-1:ER=1:L=LEN(N$)
70NEXTL
80 IF ER=0 THEN PRINT
"NOMBRE ERRONEO":
GOTO 40
90 M$=MID$(N$,1 ,P):R$=MID$
(N$,P+2,3)
100 FOR K=P+1 TO 8:M$=M$+
" ":NEXT K
110N$=M$+R$
120 G=0
130 GOSUB 170
140 CLS:INPUT"QUIERES
REPETIR(S/N)?";0$
1 50 IF 0$<>"S" AND 0$<>"s"
AND 0$<>"N" AND 0$<>"n"
THEN GOTO 140
160IFO$="S" OR 0$="s"
THEN GOTO 10 ELSE END
170 FF=0:Z=5
180 D$=DSKI$(1,Z)
1 90 A= PEEK(&HF351 ) + 256
*PEEK (&HF352)
200 FOR X=A TO A+51 1 STEP 32
210 IF PEEK(X)=0THEN FF=1 :X=
A+512:GOTO 320
220 IFPEEK(X) =229 THEN GOTO
320
230IFG = 1 THEN IF
PEEK(X+11)=
255 THEN FOR M=0 TO 7:
PRINT CHR$(PEEK(X+M)) ;:
NEXT M:PRINT ".";:FORM
=8TO10:PRINT CHR$(PEEK
(X+M));:NEXTM: PRINT ELSE
GOTO 320
240 IN=0
250 FOR LL=0TO 10
260 IF CHR$(PEEK(X + LL))<>
MID$(N$,LL+1,1)THEN 114=1:
LL=11:
270 NEXT LL
280 IF IN= 1 THEN GOTO 320
290 Fl = 1
300 POKE X+ 1 1 ,255-PEEK(X+ 1 1 )
310FF=1:X=A+512
320 NEXT X
330IFFFO1 ORZ<11 THEN
DSKO$1 ,Z:Z=Z+ 1 :GOTO 1 80
340IFG = 1 THEN RETURN
350 IFFI=0 THEN PRINT
"FICHERO INEXISTENTE"
360 RETURN
1000 FILES
1010 RETURN
Explicación: Tenemos 2 posibilidades
de Directorio a escoger: el de los fiche-
ros visibles que visualizaremos con la
sola ejecución de la instrucción FILES
en la I ínea 1 000 o el de los ficheros no vi-
sibles (enmascarados), los cuales para
visualizar primero los tendremos que lo-
calizar en el Directorio, cosa que hace-
mos enviando a la rutina que empieza
en la línea 1 30 y que como ya hemos ex-
plicado su fundamento en i A nos permi-
te analizar el Directorio. Como lo que
queremos es localizar todos los ficheros
enmascarados, utilizamos la variable G
como bandera que modificamos a 1 , por
ello en la línea 230 si G vale 1 mirare-
mos si tiene el byte 1 1 s a 255 lo que sig-
nificará que está enmascarado, y en
consecuencia escribiremos el nombre
que se hallará en los 10 primeros bytes,
teniendo precaución de añadir el punto.
Si el byte 1 1 no vale 255 nos vamos a la
posición 320 que corresponde al final
del bucle para buscar el siguiente fiche-
ro.
En la línea 40 introducimos el nombre
y la raíz del fichero, y en el bucle de 50-
70 buscamos en qué posición se en-
cuentra el punto. Debido a que puede
ser posible que el nombre del fichero no
tenga 8 caracteres que son los que tiene
reservados en el Directorio, P será el nú-
mero de caracteres antes del punto, que
obtenemos de restar 1 a la posición del
punto. Una vez localizado el punto, colo-
camos nuestra bandera de error ER a 1
e igualamos L con la longitud del nom-
bre para ganar tiempo y finalizar el bu-
cle. Si al terminar el bucle la bandera de
error tiene valor 0, significará que no ha
pasado por la línea 60 y por consiguien-
te, no habrá localizado el punto con lo
que escribiremos que hay error y volve-
remos a entrar el nombre.
En la línea 90, separamos en M$ el
nombre y en R$ la raíz, y en la línea 1 00
añadimos blancos a M$ hasta totalizar
las 8 posiciones para más tarde añadirle
la raíz, con ello a la vez habremos elimi-
nado el punto que no se utiliza en el Di-
rectorio.
Inicializamos la G a para no confun-
dir con la opción de listar los ficheros en-
mascarados y nos dirigimos a la subruti-
na de análisis del Directorio que empie-
za en la 1 70. En ella inicializamos z en el
sector 5 y la variable de fin a 0, leemos el
sector (1 80), calculamos la dirección ini-
cial del buffer (1 90) y utilizamos un bucle
que salta cada 32 (la longitud utilizada
para cda fichero). Si el primer byte del fi-
chero vale significa que hemos llegado
al final del Directorio, por ello asignamos
1 a FF e igualamos x al valor final para
terminar el bucle y ganar tiempo. En la lí-
nea 220 (si el primer byte vale 229) sig-
nifica que el fichero ha sido borrado con
KILL, y por tanto no lo consideramos
como válido. Por ello saltamos al final
del bucle para ir al siguiente fichero. En
la línea 230 si G = 1 estamos en la situa-
ción de que la rutina se utiliza para listar
los ficheros escondidos.
El bucle 250-270 lo utilizamos para lo-
calizar si el fichero en cuestión es el que
estamos buscando. Para ello nos vale-
mos de la variable IN. Si IN vale 1 des-
pués del bucle significará que el nombre
no coincide y saltaremos al final del bu-
cle mayor para continuar con el siguien-
te fichero.
Si después de todo el programa llega
a la 280, significa que hemos localizado
el fichero que nos interesa y a continua-
ción lo que hacemos es invertir el valor
del byte 1 1 . Si su valor es pasará a va-
ler 255, y si es 255 pasara a valer 0. La
variable Fl nos detecta que hemos en-
contrado el fichero. En caso contrario en
la línea 350 nos escribirá la no presen-
cia del fichero en cuestión.
En la línea 330, en caso de no haber
llegado al final del Directorio grabamos
los cambios, avanzamos un sector y vol-
vemos a realizar el proceso.
22
CURSO DE INGLES
The Gruneberg Linkword Language System es un sistema, para enseñanza de idiomas, más rápido y
rácil que los métodos convencionales aplicados actualmente.
En poco tiempo, máximo 20 horas, te enseñará un vocabulario de 400 palabras y adquirirás unas buenas
nociones de gramática. Esto te permitirá entender y ser entendido en tus viajes a lugares de habla inglesa
o en tus contactos con personas que se expresen en ese idioma.
Por otra parte, el Sistema Plus Data, consigue que el ordenador se convierta en un perfecto profesor que
te explicará, orientará y corregirá, manteniendo en todo momento un "diálogo" interactivo de resulta-
dos sorprendentes.
THE GRUNEBERG LINKWORD
LANGUAGE SYSTEM
plu/dot
_L Tavlor "POPULAR
COMPUTER WORLD":
"Quedé francamente atónito al
comprobar la efectividad de la
smestión de imágenes como
ZrnnUo de ayiula a la retención.
-"PERSONAL COMPUTER
WORLD":
"Un suceso fuera de serie..."
Sfc "COMPUTER
l »tcrcsant c .. " ** es el ™«l
plu/
Programas de EAO para EGB.
ai
Nombre
Apellidos
1
Dirección
Población
D.P
Forma de pago:
Reembolso □
.Tino
Giro postal [~
Envío talón [
□ Curso de Inglés 1.' parte. 10 lecciones Linkword. (Cinta) P.V.P. 6.900.-Ptas.
□ Curso de Inglés 1/ parte. 10 lecciones Linkword. (3,5"-D¡sk) P.V.P. 7.900.-Ptas
ENVIAR ESTE CUPON A: PLUS DATA, S.A. CA GRAN VIA, 661 pral. 08010-Barcelona. Tel. 246 02 02
LA GIRO
Nuestra revista publicará a partir del presente número una serie de artículos explicando la técnica de la
GIROMATICA, nombre dado por nuestro colaborador J. M. Climent a un método original, que permite obtener vistosas
figuras en la pantalla del ordenador de una forma automática.
Esta técnica se recoge en un programa llamado « Giromatic » del que se dará un listado al final de la serie de artículos.
Sin embargo, los programadores avispados, podrán ya desarrollar sus propios programas una vez conozcan el secreto
de la técnica que se explicará ya a partir del próximo número.
(Por J. M. Climent Parcet)
L- Introducción
Confieso que en programación
hay errores fructíferos. La téc-
nica y el programa que se descri-
ben en las páginas que siguen, son con-
secuencia de un error cometido en una
línea de un programa, aunque el resul-
tado fue tan asombroso para mí, que
analizando el error y sus consecuen-
cias, creo que he conseguido algo entre-
tenido y que quizá para algunos sea de
cierta utilidad.
Intentaba yo hacer girar en la pantalla
alrededor de su centro, a una elipse de-
finida por puntos, utilizando las fórmulas
de rotación de ejes de coordenadas. En
la línea correspondiente a la definición
del ángulo de giro Z, que debía ser el
mismo para todos sus puntos, puse
Z=Z+ 1 en lugar de Z= 1 . Cuando en la
pantalla apareció la primera imagen,
tuve una decepción pues no era la elipse
que yo esperaba, sino un conjunto dis-
perso de puntos en aparente desorden.
Mientras reflexionaba sobre la causa de
lo ue sucedía, apareció una figura en
forma de un 3 acostado. Me di cuenta
entonces de que el desorden no era tal y
seguí esperando nuevas figuras antes
de corregir mi error, las cuales fueron
apareciendo sucesivamente, algunas
de ellas con los puntos ordenados de tal
modo que llegaban a formar imágenes
de cierta belleza. Observé también que
las figuras no se repetían ni aún des-
pués de aparecer muchas de ellas. En
ratos libres y largas noches he ido anali-
zando lo que sucedió, intentado perfec-
cionarlo y dándole formulación matemá-
tica.
Para designar de algún modo la técni-
ca tratada aquí, consistente en hacer gi-
rar figuras geométricas en la pantalla del
ordenador, lo he hecho con el nombre
de GIROMATICA. Me pregunto si al-
guien ha tratado antes este tema que no
tiene relación ni con la geometría fractal
ni con la de la tortuga. La complejidad de
una formulación a priori me hace dudar
de ello. Sin embargo, si alguien tiene co-
nocimiento de que este tema ha sido ya
tratado con anterioridad, agradecería
información al respecto.
24
2.- Bases de la Giromática
2.1.- Giro de un punto alrededor de un
centro en un ángulo constante.
Sea un sistema de coordenadas OXY
y un punto P definido en este sistema
por las coordenadas x,y.
Si el sistema de ejes gira un ángulo z,
las coordenadas del punto P respecto al
nuevo sistema de ejes oX'Y' vienen de-
finidas por:
x1=x.cosz -y.sen z
y1=x.sen z -i-y.cos z
y.
y*
p
X
X
Como que los ejes de la pantalla del
ordenador son fijos, si representamos
las coordenadas x1 ,y1 obtendremos la
posición de un punto p1 , a la misma dis-
tancia del centro y girado un ángulo z
respecto al punto anterior.
Si escribimos el siguiente programa:
PROGRAMAN. 1
10INPUT X.Y.Z
20 CLS:COLOR 10,1,1 ¡SCREEN 2
30 PSET(125+x,95+y)
40 y1 =x.sin(z) +y.cos(z)
50x1=x.cos(z) -y.sin(z)
6.0x=x1:y=y1
70 goto 30
Introduciendo las coordenadas 50,50
y el ángulo .5, el punto inicial irá girando
en sentido contrario a las agujas del reloj
alrededor del centro 125,95. Si quere-
mos borrar los puntos anteriores, basta
añadir al principio de la línea 30 CLS. En
caso contrario los puntos sucesivos for-
marán una circunferencia teórica y una
elipse en la pantalla, debido a la despro-
porción de los pixels de ambos ejes. Si
se quiere conocer el ángulo total girado
desde el principio, habrá que introducir
en el programa una variable de acumu-
lación, por ejemplo:
65w=w+z
Otra forma de expresar lo anterior, es
mediante la representación del punto en
coordenadas polares, en lugar de carte-
sianas.
Sea el polo y el eje X origen de ángu-
los. La posición del punto se define por
la distancia al polo PO=R y el ángulo A
que forma PO con el eje OX. A la distan-
cia R se le llama módulo y al ángulo A ar-
gumento del punto P. Ahora bien, si gira-
mos el punto P un ángulo z, el punto P1
vendrá definido por el mismo módulo R y
por el argumento A+z. Dado que el BA-
SIC no permite la representación directa
de puntos en coordenadas polares, hay
que pasar a cartesianas para represen-
tar P1. Así, las coordenadas del punto
girado p1, serán:
x1=R.cos(A+z) y1=R.sen(A+z)
El programa 1 anterior se escribiría
así:
PROGRAMAN. 2
10INPUTR;A;Z
20 CLS:COLOR 10,1 ,1 :SCREEN 2
30 x= R.COS (A):Y=R.SIN(A)
40PSET(125 + x,95+y)
50A=A+z
60 GOTO 30
En este programa, el ángulo A expre-
sa en cada momento el ángulo total gira-
do desde el inicio. Como puede obser-
varse comparando con el programa n.°
1 este segundo tiene que ser de más rá-
pida ejecución.
Tal como se han planteado ambos
programas, estos se desarrollan indefi-
nidamente, ya que esto es el objeto de la
«giromática», aunque no hay dificultad
alguna en poner condiciones para su fi-
nalización.
Lo explicado hasta ahora es suficien-
temente conocido, ya que es la forma
normal de definir una circunferencia por
puntos. Sin embargo, hemos creído re-
pasar esta cuestión antes de entrar en
temas más complejos.
En el programa anterior en lugar de la
sentencia PSET puede usarse PUT
SPRITE si previamente hemos definido
éste y se tendrá entonces un sprite gi-
rando alrededor de un punto.
2E
SMYO MPC-200
Un nuevo modelo de la
vieja generación.
Quizás algunos de nuestros lectores -a la .vista de los últimos comentarios de aparatos aparecidos en esta sección-
hayan dado en pensar que tanto los fabricantes como nosotros habíamos olvidado a los MSX de la primera generación.
Nada más falso, por cierto. Contra viento y marea, SANYO ha lanzado recientemente al mercado español un nuevo
modelo de MSX de primera generación: El SANYO MPC-200.
Los ordenadores SANYO MSX, no
son quizás los productos más cono-
cidos de este importante fabrican-
te japonés.
Lo cierto es que SANYO no mantiene
una política de presentación continua
de novedades -al contrario que otros fa-
bricantes-, pero no por ello pierde el
tren ni descuida a sus usuarios sino que,
al contrario, presenta novedades esco-
gidas de un alto nivel de prestaciones y
con una excelente relación entre calidad
y precio.
Fruto de esta sana y juiciosa política
comercial es el ordenador MSX SANYO
MPC-200, un claro exponente de hasta
dónde se puede cuidar la calidad y el di-
seño.
DISEÑO ELEGANTE Y ORIGINAL
Lo primero que llama la atención en
este nuevo equipo de SANYO es lo re-
volucionario de su diseño:
No se trata del típico cajón rectangu-
lar pensado única y exclusivamente
como contenedor de la circuitería y del
cableado, sin ninguna concesión a la es-
tética o a la comodidad del usuario, sino
que -al contrario- el diseño tiene un pa-
pel capital en la concepción de este
equipo.
Este MPC-200, en lo externo, no tiene
nada que ver con el modelo antecesor
(el MPC-100). Ha redondeado y suavi-
zado sus aristas y ha roto la rígida sime-
tría del aparato anterior.
El lado derecho del aparato se prolon-
ga en sentido longitudinal (superior e in-
teriormente) en dos lugares muy estra-
tégicamente calculados: Bajo las teclas
de cursor (para eliminar la incómoda
26
sensación de tener la mano «colgando»
mientras se está operando con ellos (los
lectores que hayan pasado una buena
cantidad de horas manejando su orde-
nador sabrán a que especie de incómo-
da molestia nos estamos refiriendo). So-
bre las ranuras de cartucho, como se ha
dicho anteriormente, también se ha pro-
longado el espacio; aprovechándose el
lugar para colocar el led indicador de
operación.
A la izquierda de la ranura de cartu-
cho, y aprovechando el mismo espacio,
se ha colocado el útilísimo botón de RE-
SET.
TECLADO ESPAÑOL
El teclado, del tipo QWERTY, tiene un
diseño normalizado (DIN) es ergonómi-
co y responde con absoluta fiabilidad a
las pulsaciones.
Como dijimos anteriormente, la cali-
dad que ofrece SANYO queda patente
incluso en los pequeños detalles, como
es la inclusión en el teclado de la tecla ñ,
lo que evita incómodas y extrañas com-
binaciones de teclas a la hora de redac-
tar cualquier escrito o incluso de teclear
un programa.
Ante la avalancha de equipos MSX de
la segunda generación, algunos agore-
ros preconizaban la extinción definitiva
de los aparatos de primera generación.
Una prueba palpable de que sus argu-
mentos son absolutamente infundados
es la aparición en el mercado de este mi-
croordenador de primera generación
presentado por SANYO en la presente
edición de SONIMAG, donde obtuvo un
importante éxito.
SANYO demuestra con el lanzamien-
to de este aparato que el concepto de
norma es lo suficientemente versátil y
amplio como para que puedan coexistir
compartiendo su hegemonía aparatos
que pertenezcan tanto a una como a
otra generación, estando pensada la
norma en su conjunto para satisfacer al
espectro más amplio posible de usua-
rios, que son -en definitiva- quienes en
último lugar tienen que efectuar una
evaluación del producto, decidiendo
-en función de sus necesidades- qué
generación de MSX es la más conve-
niente para las tareas que pretendan
realizar, y dentro de cada una de ellas
cuál es el aparato que les ofrece las
prestaciones solicitadas por el precio
más justo.
Es decir: el hecho de que coexistan
dos generaciones de la misma norma no
obliga forzosamente a adquirir la más
novedosa, sino que amplía las posibili-
dades de elección del usuario final.
De todos modos, aquellos que se de-
cidan por la adquisición de un SANYO
MPC-200, habrán tomado una buena
decisión.
FICHA TECNICA
Microprocesador
Z80A
Frecuencia dock
3,58Mhz
Memoria ROM
32K
Memoria RAM
64K + 16K VRAM
Texto
40*24
32*24
Gráficos
256*192
Colores
16
Sprites
32
Sonido
8 octavas 3 canales
Teclado
75 teclas Qwerty
Cartucho
2 conectores
Conexiones directas
2joysticks
Impresora Centronics
Video/ audio
RF
Lenguajes
en la norma
Basic, Ensamblador... todos los disponibles
Distribuidor
Sanyo informática, S.A.
Paseo Valldaura 258 - 0801 6 Barcelona
27
o
t(\Hl II i-i
E R I A
Programa de juego por José Menéndez Martínez
Entretenido juego en que tendrás que cazar a la escurridiza bruja. Sus cuatro
pantallas están cargadas de emoción. Aunque el listado es largo, vale la pena.
PARA Í1.S.X. EXTRA
10 IMMMI BRUJERIA
20 '■
30 '■ CREADO POR:
40 '■
50 '■ José Menéndez Martínez
60 ■
70 '■ AVILES
80 '■
90 '■
100 '
110 SCREEN 2,2:C0L0R l,l,l:DEFINT A-Z
120 C10SE:0PEN "GRP: " ASI1
130 GOTO 6210
140 nwi PANTALLA 1 ■■■■■
150 PUT SPRITE 9,(37,Y1),0
160 PUT SPRITE 10, (92,Y2) ,0
170 PUT SPRITE ll,U47,Y3),0
180 PUT SPRITE 12, (202, Y4) ,0
190 PUT SPRITE 4, (70, 158),
200 PUT SPRITE 5, (200, 158),
210 PUT SPRITE 6, (130, 158),
220 PUT SPRITE2,(X1,Y1),0
230 PUT SPRITE0,(X,Y),0:PUT SPRITE 1,(X,
Y+12),0:PUT SPRITE 3,(X,Y),0
240 PUT SPRITE 18, (38, 80),
250 PUT SPRITE 19, (200,80) ,0
260 PUT SPRITE 21, (X, Y) ,0:PUT SPRITE 22,
(X,Y),0:PUT SPRITE 23, (X,Y),0:PUT SPRITE
24,(X,Y+8),0
270 CLS:C0L0R 1 , 7, 7: CLS: COLOR ,,7
280 CL0SE:0PEN "GRP:"ASfl
290 LINE(0,70)-(256,135),3,BF
300 LINE(0,135)-(256,192),11,BF
310 B$='S4C12E20F10E10F2E2F2R8E2F2E2F10E
6F16L92":DRAW"BM5,70XB$;":PAINT(9,69),12
320 M$='C15E2F4E3FEF3E4F2H10G10':DRAWBH
45,50XM$;':PAINT(55,44),15
330 Pí='S4C2R7E7F3E6F4E2RFEF5R3E4F4E8F4E
2F4R3E2F2E2F3E3F3E2FE4F4E2F4EF3E2FEF4BR2
9E6F2EF3EF2E3RF4E10F3E4F5R3E3FRF4R2E4RE3
RF2E3F3E2E4F5E3F5E4F6E2F5E3"
340 DRAW , BH0,70XP$;'
350 LINE(0,70)-(105,70),2
360 LINE(165,70)-(255,70),2
370 PAINT(30,69),2
380 PAINT(254,69),2
390 FOR E=l TO 15
400 CIRCLE(200,45),8,11„,1.4:PAINT(200,
45), 11
410 S$="C11U14D14E12G12F12H12F12H12D14U1
4G12E12L12R24L12H12F24':DRAWBH200,45XS$
420 A1$="S8C14UEUERERERERERFRFRFDFDFÜFDG
D6LGLGL6LHLHLHLHUHUHL"
430 A2$="S8C14UEUERJJEURERFRFRFDFD6DGL6LB
L6LHLHUH"
440 DRAH"BM30, 16XA1$; ":PAINT(33, 16) , 14
450 DRAWBM60,24XA2$; , :PAINT(73,24),14
460 DRAH'BM40,190XP1$;"
470 LINE(143,70)-(235,126),2
480 LINE(112,70)-(20,126),2
490 LINE(149,70)-(255,108),2
500 LINE(156,70)-(255,91),2
510 LINE(106,70)-(0,108),2
520 LINE(99,70)-(0,91),2
530 LINE(88,70)-(0,78),2
540 LINE(167,70)-(255,78),2
550 C1$="S2C1U5E4U7L2E12F6G6H6F6L12R10D7
E6U6B6G6R6U10L3E13F766H7F7L14R11D10E6U7D
7G6R6U7L2E12F6G6H6F6L12R10D7E6U7D7F4G6H4
F4D5E6U5D5G6L18U5L6D5L19 i
560 DRAH"BH115,72XC1$;"
570 PAINT(122,60),1
580 PAINT(127,60),1
590 PAINT(134,6i),l
600 PSET(119,68),1
610 PSET(119,67),1
620 PSET(132,68),1
630 PSET(132,67),1
640 FOR 1=8 TO 250 STEP 8
650 LINEÍI, 125)-ÍI+1, 135) , 1 , BF
660 NEXT I
670 LINE(0,127)-(255,127),1
680 LINE(0,130)-(255,130),1
690 LINE(0,133)-(255,133),1
700 T1$="S6C9610R30H10L10"
710 DRAM'BM25,133XT1$;'
720 PAINT(26,135),9
730 T2$="S6C7R10F10L10H10'
740 DRAN , BH25,133XT2$;'
750 PAINT(28,134),7
3fe i UUI /C OC» '/O'-
760 T3$=*S6C11B610R10U8D8R10'
770 DRA«"B«25,133XT3$¡-
780 C1RCLE(160,152),25,7,„.3¡PAINT(160,
152) ,7:CIRCLE(160, 152) , 25, 1 , 0, 3. 14, ,3:CI
RCLEÍ160, 152) , 18,7,0,3.14, .3
790 CIRCLE(93,152),25,7,,,.3:PAINT(93,15
2),7:CIRCLE(93,152),25,1,.5,2.64,.3
800 CIRCLE (225, 152) , 25, 7, , , . 3: PAINT ( 225,
152), 7:CIRCLE(225,152), 25,1, .5,2.64,. 3
810 YH=180
820 FOR 1=2 TO 255 STEP7
830 LINE(I+2,YH)-(I,YH-3),2
840 NEXT I
850 FOR 1=5 TO 255 STEP7
860 LINE(I-2,YH)-(I,YH-3),2
870 NEXT I
880 LINE(0,182)-(255,191),15,BF
890 LINE(90,30)-(175,40),0,BF
900 CLEAR B00:OPEN "6RP:" ASI1
910 V=10:DRAWBM12,183':COLOR 1:PRINTI1,
■V=';V
920 T=40:DRAW'BH55,183':COLOR 1:PRINTI1,
■T=";T
930 PU=9: DRAH-BM1 10, 183" : COLOR 1:PRINTI1
,'B=";PU
940 LINE (150, 184) - (254, 1B9) , B, BF
950 LINE(150,1B2)-(255,191),8,B
960 P=l : X=0: Y=145: E=4: El=5: E2=22: E3=25:B
=12:C=0:C1=0:W=1:Z=1:R=150:T=40:V=10:PU=
9: GOTO 2040
970 1 11 PANTALLA 2
980 PUT SPRITE2, (XI, Yi) ,0
990 PUT SPRITE0,(X,Y),0:PUT SPRITE 1,(X,
Y*12),0:PUT SPRITE 3,(X,Y),0
1000 CLSsCOLOR ll,ll,U:CLS:C0L0R ,,11
1010 LINEÍ0, 18D-Í255, 191) , 15.BF
1020 FOR 1=0 TO 150 STEP 10:LINE(0, I)-(l
3,1),1:NEXT I : LINE ( 13, 0) - ( 13, 150), 1
1030 X=23:Y=10
1040 FOR 1=10 TO 23:LINE(13,Y)-(X,0),1:X
=X+10;Y=Y+10¡NEXT I
1050 DRAN-BH0, 171S4C5R22E31R29D4610E10U4
G10D10R33E10U10R29D4610E10U4610D10R38E10
U10R30D4G10E10U4G10D10R70"
1060 LINE(13,150)-(163,0),5:LINE(0,150)-
(13,150), 5:PAINT(255,0), 5
1070 DRAWBH54, 143BU10C1 1R28D10EU10G2E2C
11L28*
1080 DRAH"BH0,164S4CUR22D10U10E31D10U10
EL2G33L22'
1090 DRAWBN116, 143S4C1 1U10R26D10EU1062E
2C11L27'
1100 DRAN , BH183,143S4C11U10R29D10EU10G2E
2C11L27'
1110 DRAWBH23, 0S4C ID 1 0BD 1 0D 1 0BO 1 0D1 0BD 1
0D10BD10D10BD10D10BD10D10BU140BR106D10D1
0BD10D10BD10D10BO10D10BD10D10BD10D10BD10
BU120BR10D10BD10D10BD10D10BD10D10BO10D10
BD10D10BD10BU110BR10"
1120 DRAN , BH63,0S4C1D10BD10D10BD10D10BD1
0D6BD54D10BU70BR13D7BD10D10BD20D10BU59BR
10D8BD10D10BU25BR10D6BD10D10BU28BR10D8BD
10D10BU28BR10D8BU8BR10D8-
1130 LINE(90,l)-(70,21),6:LINE(90,l)-(90
,36),6:LINE(70,21)-(70,56),6:LINE(70,56)
-(90,36),6:PAINT(88,8),6:LINE(13,150>-(1
63,0). 5
1140 '
1150 LINE(70,50)-(255,55).1,BF:LINE(70.5
5)-(83,58),l,BF:LINE(150,55)-(165,58),l,
BF:LINE(70,50)-(255,36),8,BF:LINE(84,40)
-(255,40),9:LINE(79,46)-(255,46),9
1160 LINE(155,55)-(160,85),1,BF:LINE(160
,85)-(175,67),l:LINE(176,67)-(176,55),l
1170 LINE(90,l)-(90,36),l:LINE(70,21)-(7
0. 56>,1:LINE(70,54)-(90,34),1:LINE(155,5
4) -(173, 36), 1
1180 X=87:Y=0:FOR 1=0 TO 10
1190 X=X+3:Y=Y+3:CIRCLE(X,Y),2,1,,,1.4:N
EXT I
1200 X=66:Y=17:F0R 1=0 TO 10
1210 X=X+3:Y=Y*3:CIRCLE(X,Y),2,1,,,1.4:N
EXT I
1220 V=V:DRAM"BÍ112,183-:C0L0R 1:PRINT#1.
"V=';V
1230 T=T:DRAW"BH55,1B3':C0L0R l:PRINTtl.
"T=-;T
1240 PU=9:DRAW"BM110, 183":C0L0R 1:PRINT*
1, 'B=';PU
1250 LINE(150,184)-(254,189),8,6F
1260 LINE(150,182)-(254,191),8,B
1270 X=0:Y=145:E=4:E1=5:E2=22:E3=25:B=28
:C=0:C1=0:W=1:Z=1:P=2:R=150
1280 Y1=25:X1=65:T=T:V=V:PU=9
1290 PLAY"L6S8H3000N60VL6S8H3000N60V
L6S8H3000N60"
1300 FOR 1=1 TO 42
1310 X=X+2.7
1320 PUT SPRITE 0, (X,Y),1,E:PUT SPRITE 1
,(X,Y+12),1,E1:PUT SPRITE 3,(X,Y),8,E3
1330 Xl=Xl+4
1340 PUT SPRITE 2, (XI, Yl), 1,B
1350 SWAP E1,E2
1360 NEXT I
1370 Y=Y-3: Yl=25
1380 GOTO 2150
_
1390 tmm PANTALLA 3 MI
1400 PUT SPRITE2, (X1,Y1),0
1410 PUT SPRITE0,(X,Y),0:PUT SPRITE 1,(X
,Y+12),0:PUT SPRITE 3,(X,Y).0
1420 CLS: COLOR 1, 1, 1: CLS: COLOR 1,1,1
1430 LINE(0,182)-(255,191),15,BF
1440 X1=1:X2=254:Y=1
1450 FOR 1=0 TO 17
1460 LINE(X1,Y)-(X2,Y),11
1470 Xl=Xl+5:X2=X2-5:Y=Y+4
1480 NEXT I
1490 X1=0:X2=255:Y=177
1500 FOR 1=0 TO 17
1510 LINE(X1,Y)-(X2,Y),6
1520 Xl=Xl+5;X2=X2-5:Y=Y-4
1530 NEXT I
1540 LINE(20,50)-(20,130),15:LINE(70,80)
-(70,100),15:LINE(20,50)-(70,80),15:LINE
(20, 130Í-Í70, 100) , 15
1550 LINE(235,50)-(235,130),15:LINE(185,
80)-(185,100),15:LINE(235,50)-(185,80),l
5:LINE(185.100)-!235,130),15
1560 LINE(90,73)-(165,104),15,BF
1570 PUT SPRITE 18, (38,80) ,15,20
1580 PUT SPRITE 19, (200,80) , 15,20
1590 V=V:DRAW"BM12,183":C0L0R hPRINTIl,
"V=";V
1600 T=T:DRAW"Bf155,183":C0L0R 1:PRINT*1,
'T=';T
1610 PU=11:DRAWB!U10,183":COLOR 1 rPRINT
#1,"B=";PU
1620 LINEÍ150, 184) -(255, 189) ,8,BF
1630 PLAY"L6S8N3000N60VL6S8I13000N60V
L6S8H3000N60"
1640 GOTO 4250
1650 PANTALLA 4 ■■■■
1660 PUT SPRITE25 ,(X+3,Y).0
1670 PUT SPRITE 18, (XI, YO.
1680 PUT SPRITE 19,(XD,YC),0
1690 PUT SPRITE 2, (XI, Yl) ,0
1700 PUT SPRITE 0,(X,Y),0:PUT SPRITE 1,(
X,Y),0:PUT SPRITE 3, (X, Y) ,0:PUT SPRITE 2
4,(X,Y*8),0
1710 CLSsCOLOR 1, 1, 1: CLS: COLOR 1,1,1
1720 LINE(1,0)-(256,5),11,BF
1730 LINE(1,90)-(256,95),11,BF
1740 LINE(1,175)-(256,180),11,BF
1750 LINE(1,0)-(5,190),U,BF
1760 LINE(251,0)-(256,190),11,BF
1770 LINE(1,96)-(4,135),4,BF
1780 LINE(1,51)-(5,89),4,BF
1790 LINE(35,90)-(55,95),1,BF
1800 LINE(90,90)-(110,95),1,BF
1810 LINE(145,90)-(165,95),1,BF
\
. ül r I -
TKTii II U
1820 UNE(200,90)-(220,95),1,BF
1830 DRAWBM4, 135S4C 1 1 R5D5R5D5R5D5R5D5R5
D5R5D5R5D5R5D4'
1840 UNE (#, 182) - (255, 191 ) , 15, BF
1850 LINE(240,83)-(246,89),15,BF
1860 LINE (243. 83) - (243, 79) , 15: LINE (241 , 7
9)-(245,79),15
1870 V=V:DRAM"BH12,183":C0L0R 1:PRINTI1,
"V=";V
1880 LINE(50,184)-(256,189),8,BF
1890 PLAY"L6S8H3000N60","L6S8H3000N60","
L6S8H3000N60"
1900 PUT SPRITE 4,(70,1581,15,28
1910 PUT SPRITE 5, (200, 158), 15, 15
1920 PUT SPRITE 6, (130, 158) , 15,42
1930 GOTO 5130
1940 X=110:Y=156
1950 PUT SPRITE 21, (X, Y) , 15, E: PUT SPRITE
íMMMiiiiPUT mm ^.(K.Yi.fjii
PUT SPRITE 24, (X,Y+B),3,E3
1960 D=STICK(0) OR STICK(l)
1970 IF D=0 THEN X=X: Y=Y: E=30: El=31 : E2=3
1:E3=32
1980 IF D=l THEN X=X:Y=Y:E=30:El=3i:E2=3
1:E3=41
1990 IF ü=3 THEN X=X+4: Y=Y:E=33:E1=34:E2
= 35; E3 = 36
2000 IF D=7 THEN X=X-4:Y=Y:E=37:E1=38:E2
=39:E3=40
2010 IF X=<1 THEN X=l
2020 IF X=>245 THEN X=235
2030 SOTO 1950
2040 SOUND 0,255: S0UND2, 255: S0UND4, 255: S
OUND3,16:SOUND9,16:SOUND10,16:SOUND7,248
:SOUND6.15:SOUND12,2:SOUND13,10
2050 Yl=INT(RND(l)tl00)+20
2060 FOR 1=1 TO 40
2070 X=X+3
2080 PUT SPRITE 0, (X, Y) , 1 , E: PUT SPRITE 1
,(X,Y+12),1,E1:PUT SPRITE 3,(X,Y),8,E3
2090 Xl=Xl+6:Yl=Yl-l
2100 PUT SPRITE 2,(X1,Y1),1,B
2110 SHAP E1,E2
2120 NEXT I
2130 Y=Y-3
2140 Y1=INT(RND(1)»50)*20
2150 '■■ CIRCUITO PRINCIPAL ■■
2160 LINE(R,184)-(R+1,189),15,BF
2170 IF R=220 OR R=230 OR R=240 OR R=245
THEN PLAY"L6EEE"
2180 IF R=>256 THEN 7150
2190 R=R*1
2200 ON STRIG GOSUB 2510,2510:STRI6(0)
N:STRIB(1) ON
2210 X1=X1+20:Y1=Y1
2220 PUT SPRITE 2, (XI, Yl) , 1,B
2230 IF P=l THEN 2250
2240 IF P=2 THEN 2260
2250 IF Xl>=230 THEN X1=0:6OTO 2270
2260 IF Xl>=230 THEN Xl=65
2270 PUT SPRITE 0, (X, Y) , 1 , E: PUT SPRITE 1
, (X,Y+12) , 1,E1:PUT SPRITE 3, (X, Y) ,8,E33
2280 IF Y>=145 THEN Y=145
2290 IF Y=<117 THEN Y=U7
12300 IF X< 172 AND X>130 AND Y<131 OR X<
105 AND X>67 AND Y< 131 OR X<245 AND X>19
6 AND Y<131 THEN 60T0 3650
2310 PUT SPRITE 25, (X,Y) ,0, 13
2320 IF X=>235 THEN X=235
2330 IF X=<50 THEN X=50
2340 D=STICK(0) OR STICK(l)
2350 IF D=0 THEN X=X:Y=Y:E=0:E1=1
2360 IF D=l THEN X=X:Y=Y-8:E=2:E1=3
2370 IF D=2 AND W=l THEN X=X+8:Y=Y-8:E=4
:E1=5:E3=25:N=2:G0T0 2150
|23B0 IF D=2 AND W=2 THEN X=X+8: Y=Y-8:E=4
:E1=22:E3=25:W=1:G0T0 2150
2390 IF D=3 AND N=l THEN X=X+8: Y=Y:E=4:E
1=5:E3=25:W=2:G0T0 2150
2400 IF D=3 AND W=2 THEN X=X+8:Y=Y:E=4:E
1=22: E3=25: W=l : BOTO 2150
2410 IF D=4 AND W=l THEN X=X+B: Y=Y*8:E=4
:Ei=5:E3=25:tl=2:60T0 2150
2420 IF D=5 THEN X=X:Y=Y*8:E=21:E1=1:E3=
27:60T0 2150
2430 IF D=4 AND N=2 THEN X=X*8: Y=Y+8:E=4
:El=22:E3=25:N=i:G0T0 2150
2440 IF D=6 AND Z=l THEN X=X-8: Y=Y+8:E=6
:E1=7:E3=26:Z=2:60T0 2150
2450 IF D=6 AND 1=2 THEN X=X-8 : Y=Y+8 : E=6
:E1=23:E3=26:Z=1:G0T0 2150
2460 IF D=7 AND Z=l THEN X=X-8:Y=Y:E=6:E
1=7:E3=26:Z=2:60T0 2150
2470 IF D=7 AND Z=2 THEN X=X-8: Y=Y:E=6:E
1=23:E3=26:Z=1:60T0 2150
2480 IF D=8 AND Z=l THEN X=X-8:Y=Y-8:E=6
:E1=7:E3=26:60T0 2150
2490 IF D=8 AND Z=2 THEN X=X-8:Y=Y-8:E=6
:E1=23:E3=26:Z=1:G0T0 2150
2500 GOTO 2150
2520 IF D=0 OR D=5 THEN RETURN
2530 SOUND 0.170:SOUND1,15:SOUND2,0:SOUN
D3, 13 : S0UND4, 255: S0UND5, 15: S0UND6, 20: SO
UND7,207:SOUND8,16:SOUND9,16:SOUND10,16:
SOUND11,15:SOUND12,15:SOUND13,0
2540 X3=X
2550 GOSUB 6100
2560 FOR I=Y-22 TO -40 STEP-40
2570 IF D=l THEN X3=X3
2580 IF D=2 OR D=3 OR D=4 THEN X3=X3+26
2590 IF D=6 OR D=7 OR D=8 THEN X3=X3-26
2600 Dí=STICK(l) OR STICK(0)
2610 PUT SPRITE 25, (X3+3, 1-1) ,15, 13
2620 IF X3=<5 THEN 60TO 2870
2630 IF X3>=250 THEN 2870
2640 IF X3+3>Xl-8 AND X3+3<Xl+8 AND I-5<
Yl THEN GOTO 2900
2650 X1=X1+18: Y1=Y1
2660 PUT SPRITE 2, (XI, Yl) , 1,B
2670 IF P=l THEN 2690
2680 IF P=2 THEN 2700
2690 IF Xl>=230 THEN X1=0:6OTO 2710
2700 IF XI >=230 THEN Xl=65
2710 PUT SPRITE 0, (X,Y), 1,E:PUT SPRITE 1
, (X,Y+12) , 1,E1:PUT SPRITE 3, (X,Y) ,B,E3
2720 IF D1=0 THEN X=X:Y=Y:E=0:E1=1
2730 IF Dl=l THEN X=X : Y=Y-8: E=2: E 1=3
2740 IF Dl=2 THEN X=X+8: Y=Y-8:E=4:E1=5:E
3=25
2750 IF Dl=3 THEN X=X+8:Y=Y:E=4:E1=5:E3=
25
2760 IF Dl=4 THEN X=X+8:Y=Y+8:E=21:E1=5:
E3=27
2770 IF Dl=5 THEN X=X:Y=Y-8:E=21:E1=1:E3
=27
2780 IF Dl=6 THEN X=X-8:Y=Y+8:E=21:E1=1:
E3=27
2790 IF Dl=7 THEN X=X-8:Y=Y:E=6:E1=7:E3=
26
2800 IF Dl=8 THEN X=X-8:Y=Y-8:E=6:E1=7:E
3=26
2810 IF X=<50 THEN X=50
2820 IF X>=235 THEN X=235
2830 IF Y=< 117 THEN Y=117
2840 IF Y>=145 THEN Y=145
2850 IF X< 172 AND X>130 AND Y<131 OR X<
105 AND X>67 AND Y< 131 OR X<245 AND X >19
I KUÜKflI b u
.
6 AND Y<i3i THEN GOTO 3650
28Ó0 NEX T I
2870 PUT SPRITE25 , (X+3, Y) ,0
2880 D=STIKC(0) OR STICKÜ)
2890 RETURN 2210
2900 'tm CAMBIO DE SPRITES ■■
2910 SOUND 2,0:SOUND 3,0:SOUND 4, 0: SOUND
5, 255: SOUND 9,0: SOUND 1 , 50 : SOUND 1 1 , 16: S
0UND12, 110: S0UND13, 9: SQUND7, fcBfil 1 1000
2920 GOSUB 6160
2930 C=C+1
2940 IF P=l AND C=l THEN B=14
2950 IF P=2 AND C=l THEN B=19
2960 IF C=2 THEN B=17
2970 IF C=3 THEN B=18
2980 IF C=4 THEN B=19
2990 IF C=5 THEN B=17
3000 IF C=6 THEN B=18
3010 IF C=7 THEN B=19
3020 IF C=8 THEN B=20
3030 IF C=9 THEN B=20
3040 IF C=10 THEN 6180
3050 FOR I=Y1 TO Y+50 STEP 20
3060 PUT SPRITE2, 1X1,1), 1,B
3070 IF P=l AND C=l AND I=>90 THEN 60T0
3080 PUT SPRITE0,(X,Y),1,E:PUT SPRITE 1,
(X,Y+12),1,E1:PUT SPRITE 3,(X,Y),8,E3
3090 PUT SPRITE25,(X+3,Y),0
3100 D=STICK(0) OR STICKÜ)
3110 IF D=0 THEN X=X:Y=Y:E=0:E1=1
3120 IF D=l THEN X=X:Y=Y-5:E=2:E1=3
3130 IF D=2 THEN X=X+7: Y=Y-7:E=4:E1=5:E3
=11
3140 IF D=3 THEN X=X+7:Y=Y:E=4:E1=5:E3=2
5
3150 IF D=4 THEN X=X+7:Y=Y+7:E=21:E1=5:E
3=27
3160 IF D=5 THEN X=X: Y=Y+7: E=2 1 : El= I : E3=
27
3170 IF D=6 THEN X=X-7:Y=Y+7:E=21:E1=7:E
3=27
3180 IF D=7 THEN X=X-7:Y=Y:E=6:E1=7:E3=2
6
3190 IF D=8 THEN X=X-7:Y=Y-7:E=6:E1=7:E3
=26
3200 IF Y=<117 THEN Y=117
3210 IF Y>=145 THEN Y=145
3220 IF X=<50 THEN X=50
3230 IF X>=235 THEN X=235
3240 IF XDX-13 AND XKX+13 AND I>=Y THE
N GOTO 4020
3250 IF X<172 AND XM30 AND Y<131 OR X<
105 AND X>67 AND Y<131 OR X<245 AND XM9
[
6 AND Y<131 THEN GOTO 3650
3260 NEXT I
3270 IF C=9 THEN 6180
3280 FOR 1=142 TO 20 STEP-20
3290 D=STICK(0) OR STICK(l)
3300 IF D=0 THEN X=X:Y=Y:E=0:E1=1
3310 IF D=l THEN X=X: Y=Y-5:E=2:E1=3
3320 IF D=2 OR D=3 THEN X=X+5: Y=Y:E=4:E1
=5:E3=25
3330 IF D=4 OR D=5 OR D=6 THEN X=X:Y=Y+5
:E=21:E1=1:E3=27
3340 IF D=7 OR D=8 THEN X=X-5: Y=Y:E=6:E1
=7:E3=26
3350 PUT SPRITE2, (XI, I) , 1, B
3360 PUT SPRITE0, (X, Y) , 1,E:PUT SPRITE 1,
(X,Y+12),1,E1:PUT SPRITE 3, (X, Y) ,8,E3
3370
PUT SPRITE25, ÍX+3,Y) ,0
3380
IF Y=< 117 THEN Y=117
3390
IF Y>=145 THEN Y=145
3400
IF X=<
}0 THEN X=50
3410
IF X>=235 THEN X=235
3420
NEXT I
3430
IF
C=2
AND
P=l THEN B=15
3440
IF
C=3
AND
P=l THEN B=15
3450
IF
C=4
AND
P=l THEN B=15
3460
IF
C=5
AND
P=l THEN B=15
3470
IF
C=6
AND
P=l THEN B=15
3480
IF
C=7
AND
P=l THEN B=15
3490
IF
C=8
AND
P=l THEN B=16
3500
IF
C=l
AND
P=2 THEN B=2B
3510
IF
C=2
AND
P=2 THEN B=28
3520
IF
C=3
AND
P=2 THEN B=28
3530
IF
C=4
AND
P=2 THEN B=28
3540
IF
C=5
AND
P=2 THEN B=28
3550
IF
C=6
AND
P=2 THEN B=28
3560
IF
C=7
AND
P=2 THEN B=28
3570
IF
C=8
AND
P=2 THEN B=43
3580
IF
P=l
THEN X1=0
3590
IF
P=2
THEN Xl=65
3600
PUT SPRITE2, (X1,Y1),1,B
3610
PUT SPRITE0, (X, Y) , 1,E:PUT SPRITE 1
(X,Y+12),1,E1:PUT SPRITE 3,(X,Y),8,E3
3620 PUT SPRITE25, (X+3, Y) ,0
3630 IF P=l THEN 2140
3640 IF P=2 THEN 2150
3650 '■■ POZOS DE AGUA »
3660 BEEP
3670 IF C=9 THEN 6180
3680 IF B=12 OR B=15 THEN B=B ELSE B=15
3690 IF P=2 THEN B=28
3700 GOSUB 6130
3710 FOR U=l TO 3
3720 PLAY\9o2b"
1 3730 FOR 1=1 "TO 7
3740 PUT SPRITE25, (X,Y+4),0
3750 IF P=l THEN 3770
3760 IF P=2 THEN 3780
3770 IF Xl>=230 THEN X1=0:GOTO 3800
3780 IF Xl>=230 THEN Xl=65
3790 X1=X1+6:Y1=Y1
3800 PUT SPRITE0. (X+3,Y+15) , 1,8:PUT SPRI
TE 1,(X,Y+15),0,E1:PUTSPRITE 3, (X+l.Y+15
),8,25
3810 PUT SPRITE2, (X1,Y1) , 1,B
3820 NEXT I
3830 FOR 1=1 TO 7
3840 IF D=6 OR D=7 OR D=8 THEN X=X
3850 IF D=2 OR D=3 OR D=4 THEN X=X
3860 PUT SPRITE25, ÍX+3, Y-l) ,0
3870 PUT SPRITE0, ( X+3 , Y+ 15) , 1 . 9: PUT SPRI
TE 1, (X, Y+15),0.E1:PUT SPRITE 3,(X,Y),0,
E3
3880 X1=X1+6:Y1=Y1
3890 PUT SPRITE2, <X1,Y1 ), l.B
3900 IF P=l THEN 3920
3910 IF P=2 THEN 3930
3920 IF Xl>=230 THEN X1=0:GOTO 3940
3930 IF Xl)=230 THEN Xl=65
3940 NEXT I
3950 NEXT U
3960 X=123:V=145:E=0:E1=1:X3=123: 1=145: X
1=X1:Y1=Y1
3970 PUT SPRITE 0, < X, Y) , 1 , E: PUT SPRITE 1
,(X,Y+12),1,E1
3980 PUT SPRITE25, (X3+3, 1-1) ,0
3990 IF P=l THEN 2140
4000 IF P=2 THEN 2150
4010 'Oü MUERTE CAZADOR "M
4020 BEEP:PLAY"16ed#eflgflge#ed»gf
4030 GOSUB 6130
4040 PUT SPRITE 0, (X, Y) ,0:PUT SPRITE 1,1
X,Y+12),0:PUT SPRITE 3, (X, Y) ,0:PUT SPRIT
E25, (X+8, Y-2) ,0
4050 E1=11:E2=24
4060 FORI=l TO 150
4070 X=X+4: Y=Y-4
4080 PUT SPRITE0, <X,Y) , 1, 10:PUT SPRITE 1
, (X, Y+12) , 1,E1:PUT SPRITE2, (X+12,Y-6),1,
B
4090 IF X=>240 THEN 4130
4100 SWAP E1,E2
4110 FOR 1=0 TO 35:NEXT I
4120 NEXT I
4130 X=123:Y=145:E=0:E1=1
4140 IF P=l THEN X1=0
4150 IF P=2 THEN Xl=65 AND Yl=25
4160 IF C=l OR C=2 OR C=3 OR C=4 OR C=5
OR C=6 OR C=7 THEN B=15
-OQPIOC
4170 IF C=8 THEN B=U
4180 IF P=2 THEN B=2B
4190 IF C=9 THEN 6180
4200 PUT SPRITE0, (X,Y) , 1,E:PUT SPRITE 1,
(X,Y+12),1,E1:PUT SPRITE25, ÍX+3, Y-2) ,0, 1
■»
4210 PUT SPRITE25, (X+3,Y-2) ,0
4220 IF P=l THEN 2140
4230 IF P=2 THEN 2150
4240 '"■ CIRCUITO 2
4250 X=110:Y=156:E=30:E1=31:E2=31:E3=32:
B=42:Z=0:R=150:XI=38:XD=200:YC=B0:PU=11
4260 ON STRIG GOSUB 4470, 4470: STRI5 (0) G
N:STRIG(1) ON
4270 UNE (R, 1B4) - (R+l , 189) , 15, BF
4280 IF R=220 OR R=230 OR R=240 OR R=245
THEN PLAY"L6EEE"
4290 IF R=>256 THEN GOTO 220
4300 R=R+1
4310 D=STICK(1) OR STICK(0)
4320 X1=X1M0:Y1=88
4330 PUT SPRITE 18, (XI, YO, 13, 20
4340 PUT SPRITE 19, (XD, YO , 13,20
4350 PUT SPRITE 2, (X1,Y1),1,B
4360 IF Xl>=160 THEN Xl=68
4370 IF X=<5 THEN X=5
4380 IF X>=235 THEN X=235
4390 PUT SPRITE 0, í X , Y) , 15, E: PUT SPRITE
1,(X,Y),1,E1:PUT SPRITE 3, í X, Y) , 9, E2: PUT
SPRITE 24, (X, Y+8) ,3,E3
4400 D=STICK(0) OR STICK(l)
4410 IF D=0 THEN X=X: Y=Y:E=30:E1=31:E2=3
1: E3=32
4420 IF D=l OR D=2 OR D=8 THEN X=X:Y=Y:E
=30:E1=31:E2=31:E3=41
4430 IF D=3 THEN X=X+7: Y=Y: E=33: El=34: E2
=35:E3=36
4440 IF D=7 THEN X=X-7: Y=Y: E=37: E1=38:E2
=39:E3=40
4450 GOTO 4260
4460 '■■ DISPARO
4470 IF D=0 OR D=3 OR D=4 OR D=5 OR D=6
OR D=7 THEN RETURN
4480 SOUND 0,170:SOUND1,15:SOUND2,0:SOUN
D3, 13 : S0UND4, 255: S0UND5, 15: S0UND6, 20: SO
UND7,207:SOUND8,16:SOUND9,16:SOUND10,16:
SOUND 11,15: SOUND 12,15: SOUND1 3 ,
4490 GOSUB 6100
4500 PUT SPRITE 18, (XI, YO,
4510 PUT SPRITE 19,(XD,YO,0
4520 X3=X
4530 FOR I=Y-22 TO 55 STEP-30
4540 IF D=l THEN X3=X3
4550 IF D=2 OR D=3 THEN X3=X3+26
4560 IF D=8 OR D=8 THEN X3=X3-26
4570 D1=STICK(1) OR STICK (0)
4580 PUT SPRITE 25, (X3+3, 1-1) , 15, 13
4590 IF X3=<70 THEN 4730
4600 IF X3>=160 THEN 4730
4610 IF X3+3>Xl-8 AND X3+3<Xl+8 AND I-5<
Yl THEN 4750
4620 X1=X1+10:Y1=8B
4630 PUT SPRITE 2, (XI, Yl) , 1,B
4640 IF Xl>=160 THEN Xl=68
4650 PUT SPRITE 0, (X, Y) , 15, E: PUT SPRITE
1,(X,Y),1,E1:PUT SPRITE 3, (X, Y) ,9,E2: PUT
SPRITE 24,(X,Y+8),3,E3
4660 IF D1=0 THEN X=X: Y=Y:E=30;E1=31:E2=
31:E3=32
4670 IF Dl=l THEN X=X:Y=Y:E=30:E1=31:E2=
31:E3=41
4680 IF Dl=3 THEN X=X+5:Y=Y:E=33:E1=34:E
2=35:E3=36
4690 IF Dl=7 THEN X=X-5:Y=Y:E=37:E1=38:E
2=39:E3=40
4700 IF X=<5 THEN X=5
4710 IF X>=235 THEN X=235
4720 NEXT I
4730 PUT SPRITE25 ,ÍX+3,Y),0
4740 RETURN
4750 SOUND 2,0:SOUND 3,0:SOUND 4,0:SOUND
5,255:S0UND 9, 0: SOUND10, 50: SOUND1 1 , 16: S
0UND12, 110: S0UND13, 9: S0UND7, &B001 1 1000
4760 GOSUB 6160
4770 Z=Z+1
4780 IF Z=>10 THEN B=43
4790 IF Z=ll THEN 1650
4800 PUT SPRITE25 ,(X+3,Y),0
4810 FOR I=Y1 TO Y+15 STEP 15
4820 PUT SPRITE2, (X1,I),8,29
4830 PUT SPRITE 0, ( X, Y) , 15, E: PUT SPRITE
1, (X,Y),1,E1:PUT SPRITE 3, í X, Y) , 9, E2: PUT I
SPRITE 24, (X,Y+8) ,3,E3
4840 PUT SPRITE 18, (XI, YO, 11, 20
4850 PUT SPRITE 19, (XD, YO, 11, 20
4860 XI=XI+10:XD=XD-10:YC=YC+19
4870 IF YC=>182 THEN YC=80:XI=38:XD=200
4880 IF XDX-13 AND XKX+13 AND YO=YOR
XD>X-13 AND XD<X+13 AND YO=Y THEN GOTO
4990
4890 D=STICK(1) OR STICK(0)
4900 IF D=0 THEN X=X:Y=Y:E=30:E1=31:E2=3
1:E3=32
4910 IF D=l THEN X=X: Y=Y:E=30:E1=31:E2=3
1:E3=41
4920 IF D=3 THEN X=X*5:Y=Y:E=33:E1=34:E2
=35:E3=36
4930 IF D=7 THEN X=X-5:Y=Y:E=37:E1=38:E2
=39:E3=40
4940 IF XDX-13 AND XKX+13 AND D=Y THE
N 60TO 4990
4950 IF X=<5 THEN X=5
4960 IF X>=235 THEN X=235
4970 NEXT I : X 1=68: XI =38: XD=200: YC=80
4980 GOTO 4260
4990 PUT SPRITE2, ÍX1,I),0
5000 PUT SPRITE 0,(X,Y),0:PUT SPRITE 1,(
X,Y) ,0:PUT SPRITE 3, (X,Y),0:PUT SPRITE 2
4,(X,Y+8),0:PUT SPRITE 18, (XI , YO , 0: PUT
SPRITE 19,(XD,YO,0
5010 GOSUB6130
5020 ' ■■ MUERTE CAZADOR ■■■
5030 BEEP:PLAY'16edteflgflgetedlgf
5040 FOR 1=0 TO 55
5050 X1=X1+2:Y1=88
5060 PUT SPRITE 2, (XI, Yl) , 1,B
5070 IF Xl>=160 THEN Xl=68
5080 XI=38:XD=200:YC=80
5090 PUT SPRITE 18, (XI, YO , 15,20
5100 PUT SPRITE 19, (XD, YO , 15, 20
5110 NEXT I
5120 GOTO 4260
5130 '■■ CIRCUITO 3 ■
5140 R=50:V=V
5150 X=5:Y=60:E=4:E1=5:E2=22:E3=25:W=1:Z
=1
5160 LINEíR, 184)-<R+1, 189) , 15,BF
5170 IF R=220 OR R=230 OR R=240 OR R=245
THEN PLAY-EEE"
5180 IF R=>256 THEN GOTO 7150
5190 R=R+1
5200 IF STRIG (0)=-l OR STRIG(1)=-1 THEN
GOTO 5430
5210 PUT SPRITE 0, (X,Y), 15,E:PUT SPRITE
1,(X,Y+12),12,E1:PUT SPRITE 3,(X,Y),8,E3
5220 IF X=<1 THEN X=l
5230 IF X=>230 THEN X=230
JO
JDQi~tQC
II II i_í
5240 IF D=5 AND X=>230 THEN X=230:BB=1:P
LAY'V10bbb':LINE(240,83)-(246,89),8,BF
5250 IF X=<5 AND BB=1 THEN 5830
5260 IF X<45 AND X>30 AND Y>50 OR X<100
AND X>85 AND Y>50 OR X<155 AND XM40 AN
D Y>50 OR X<210 AND X>195 AND Y>50 THEN
60T0 5630
5270 PUT SPRITE 9, (37,Y1) , 15, 20: Yl=Yl+2
5280 IF Yl=>50 THEN Yl=5
5290 PUT SPRITE 10, (92, Y2) ,8,20:Y2=Y2+3
5300 IF Y2=>50 THEN Y2=5
5310 PUT SPRITE 11, (147,Y3),10,20:Y3=Y3+
4
5320 IF Y3=>50 THEN Y3=5
5330 PUT SPRITE 12, (202, Y4) , 13,20: Y4=Y4+
4
5340 IF Y4=>50 THEN Y4=5
5350 D=STICK(0) OR STICK(l)
5360 IF D=0 THEN X=X:Y=Y
5370 IF D=3 AND N=l THEN X=X+6: Y=Y:E=4:E
1=5: E3=25:N=2: GOTO 5160
5380 IF D=3 AND N=2 THEN X=X+6:Y=Y:E=4:E
1=22: E3=25:N=1: GOTO 5160
5390 IF D=7 AND Z=l THEN X=X-6: Y=Y:E=6:E
1=7:E3=26:Z=2:60T0 5160
5400 IF D=7 AND Z=2 THEN X=X-6:Y=Y:E=6:E
1=23:E3=26:Z=1:G0T0 5160
5410 GOTO 5160
5420 ™ SALTO MM
5430 FOR 1=0 TO 5
5440 Y=Y-3
5450 IF D=0 THEN X=X:Y=Y
5460 IF D=3 THEN X=X+4: Y=Y:E=4:E1=22:E3=
25
5470 IF D=7 THÉN X=X-4: Y=Y:E=6:E1=23:E3=
26
5480 IF X=>230 THEN X=230
5490 IF X<50 AND X>25 AND Y<Y1+15 OR X<1
05 AND X>80 AND Y<Y2+15 OR X<160 AND X>1
35 AND Y<Y3+15 OR X<215 AND XM90 AND Y<
Y4+15 THEN GOTO 5630
5500 PUT SPRITE 0, (X,Y) , 15,E:PUT SPRITE
1,(X,Y+12),12,E1:PUT SPRITE 3,(X,Y),8,E3
5510 PUT SPRITE 9, (37, Yl) , 15,20: Yl=Yl+2
5520 IF Yl=>50 THEN Yl=l
5530 PUT SPRITE 10, (92,Y2),8,20:Y2=Y2+3
5540 IF Y2=>50 THEN Y2=l
5550 PUT SPRITE 11, (147, Y3) , 10,20:Y3=Y3+
4
5560 IF Y3=>50 THEN Y3=l
5570 PUT SPRITE 12, (202, Y4) , 13,20: Y4=Y4+
4
5580 IF Y4=>50 THEN Y4=l
5590 NEXT I
5600 Y=60
5610 60TO 5160
5620 MUERTE CAZADOR ■■"
5630 PLAY'16edleftgftgefedtgf"
5640 60SUB 6130
5650 FOR 1=0 TO 15
5660 Y=Y+6:X=X:BB=0:LINE(240,83)-(246,89
),15,BF
5670 PUT SPRITE 0, (X,Y) , 15,E:PUT SPRITE
1,(X,Y+12),12,E1:PUT SPRITE 3,(X,Y),8,E3
5680 PUT SPRITE 9, (37, Yl) , 15, 20: Yl=Yl+2
5690 IF Yl=>50 THEN Yl=5
5700 PUT SPRITE 10, (92, Y2) ,8,20:Y2=Y2*3
5710 IF Y2=>50 THEN Y2=5
5720 PUT SPRITE 11, (147, Y3) , 10,20: Y3=Y3+
4
5730 IF Y3=>50 THEN Y3=5
5740 PUT SPRITE 12, (202, Y4) , 13,20:Y4=Y4+
4
5750 IF Y4=>50 THEN Y4=5
5760 IF Y=>144 THEN 5780
5770 NEXT I
5780 FOR 1=0 TO 20
5790 PUT SPRITE 0, (X,Y+18) , 15,8:PUT SPRI
TE 1,(X,Y+12),0:PUT SPRITE 3,(X,Y),0
5800 NEXT I
5810 60T0 5150
5820 HM MUERTE BRUJA HUI
5830 SOUND 0,0:SOUND 1,5:S0UND 2,0:SOUND
3, 13: S0UND4, 255: SOUND5, 15: SOUND 6, 30: SO
UND 7, 0: SOUND 8, 16: S0UND9, 16: SOUND10, 16:
S0UND1 1 , 0: S0UND12, 5: SOUND 13, 0: FOR 1=1 TO
30:NEXT I:SOUND12,56:SOUND13,0
5840 PUT SPRITE 0, (X,Y) ,0:PUT SPRITE 1,1
X, Y+12) ,0:PUT SPRITE 3,(X,Y),0
5850 LINE(55,90)-(200,95),1,BF
5860 LINE (60, 1 10) - (95, 1 15) , 1 1 , BF: LINE ( 11
5,100)-(145,105),U,BF:LINE(165,115)-(20
0,120), 11, BF
5870 FOR 1=0 TO 200: NEXT I
5880 LINE(60,110)-(95,115),1,BF:LINE(115
,100)-(145,105),l,BF:LINE(165,U5)-(200,
120),1,BF
5890 LINEÍ60, 130)-(95, 135) , 1 1 , BF : LINE ( 1 1
5,120)-(145,125),ll,BF:LINE(165,130)-(20
0, 135) ,11, BF: FOR 1=0 TO 200:NEXT I
5900 LINE(60,130)-(95,135),1,BF:LINE(115
,120)-(145,125),l,BF:LINE(165,130)-(200,
135) , 1,BF
5910 LINE(45,170)-(80,175),11,BF:LINE(11
5,170)-(145,175),11,BF:LINE(175,170)-(21
0,175), 11, BF
5920 LINEÍ20, 120)-(70, 165) , 1 , BF
5930 PUT SPRITE 4,(70,1581,0
5940 PUT SPRITE 5,(220,1581,15,16
5950 PUT SPRITE 6,(148,1581,15,43
5960 PUT SPRITE 9,(10,751,15,20
5970 PUT SPRITE 10,(85,1601,8,20
5980 PUT SPRITE 11,(220,751,10,20
5990 PUT SPRITE 12, (220, Y4) ,0
FOR 1=0 TO 200:NEXT I
6020 BEEP: PLAY"L6C-FIDICID#FIGIA#FIDtFiE
FFiGiAIGICt"
6030 DRAN'BH75, 40': COLOR 15:PRINT#1. ■ ¡ ¡¡
BRAVO !!!'
6040 DRAWBM2B,80":COLOR 15: PRXNTil, "Par
a repetir la aventura'
6050 DRAW-BM78, 120":COLOR 15: PRINTil , a PU
LSA UNA TECLA"
6060 T=T: DRAWBM55, 183" : COLOR 1:PRINT«1.
'T=';T
6070 EÍ=INKEY$
6080 IF E$=' M THEN 6070 ELSE 140
6090 '■«■ PUNTUACION «I
6100 T=M:LINE(70,182)-(95,191),15,BF:D
RAW-BM69, 183":C0L0R l:PRINTfl,T
6110 IF T=0 THEN 7150
6120 RETURN
6130 V=V-1:LINE(27,182)-(52,191),15,BF:D
RAWBM25, 183-:CGL0R l:PRINTtl,V
6140 IF V=0 THEN 7150
6150 RETURN
6160 PU=PU-1:LINE(123,182)-(149,191),15,
BF:DRAW"BM124,183':C0L0R 1:PRINTI1,PU
6170 RETURN
6180 IF P=l THEN 970
6190 IF P=2 THEN 1390
6200 IF P=3 THEN 1710
6210 'MM PRESENTACION ■■■■
6220 CLS: COLOR 1,1,1: BEEP: PLAY"L6S8f1300N
50"
6230 B1$="S4C6U40E4R20D18G4U18L20R20E464
D18L10D4R10E4L10G4E4R10D18G4U18D18L20":D
RAW"B!122,70XBl$; n :B2$='S4C6U10R10D10L10E
4U6D6R6":DRAM'BH27,45XB2$;":DRAH , BH27,65
XB2$;":PAINT(25,69),6
6240 R$='S4C6U40E4R20D18G4U18E4G4L20R20D
18L10D4R10E4L10G4E4R10D1864U1BD18L5U13L1
0D13L5R5E4U9" : DRAN"BH54,70XR$; " : DRAWBH5
9,45XB2$;":PAINT(55,69),6
6250 U$='S4C6U40E4R5D35R6D4L10U35L5R5E4D
35R6U31E4R5D40G4U40E464L5R5D40L20 , :DRAM'
BM 84,70XU$; , :PAINT(85,69),6
6260 J$="S4C6U10E4R5D5R6D4L10E464U5L5R5E
?
m*Jh Ei o mi OOMOC
4D5R6U31E4R5G4L5R5D40E4U40D4064L20" : DRAM
■BH1 12, 7IX Jf ; a : PAINT ( 1 13, 69) , 6
6270 E$=-S4C6U40E4R20D5G4U5E4G4L20R20D5L
15D13E4U9D9G4R1 1E4L1 1R1 1DS64U5DSL1 1D12E4
U8D8R15G4L15R15D5E4U5D5G4L20-:DRAW"BM142
,70XE$;-:PAINT(143,69),6
6280 DRAW-BM172,70XR$;":DRAWBM177,45XB2
$;':PAINT(173,69),6
6290 I$='S4C6U40E4R5G4L5R5D40L5R5E4U40":
DRAW"BH202,70XI$;":PAINT(203,69),6
6300 A$='S4C6U40E4R20G4L20R20D40E4U40D40
64L5U20L10D20L5R5E4U16-:DRA«"BM218,70XA$
; , :DRAN , BI1223,45XB2$; , :PAINT(222,69),6
6310 PLAY" V10L 14EFGEFGEFGDEFGEEEEGFG6EFC
DEEFGEFEDEF6EEFGEFGCCC-
6320 P$='S4C12R4E11F3R2E7F4E2R1F1E1F6R3E
4F7E12F9E2F6R3E4F15E6F2R3E3F2E1F4E10R2E1
F3E2F2E1F3E1F2E3R1F4E6F3E4F8E3F1R1F4E6R1
E3R1F2E3F3E2E7F2E3F6E1F1E1F1E1F1R1E7F3E3
F5E1R10"
6330 DRAW-B«0,100XP$;"
6340 LINE(0, 110)-(255, 110) , 12
6350 PAINK0, 109) , 12
6360 LINE(0,110)-(255,191),11,BF
6370 DRAWBH0, 1B5XL$; "
6380 L$="C1R21BU20R15L35BU15R45BU12R9L54
BU10R61BU7R5L66BU6R69BU5R5L73'
6390 DRAWBM0, 1B5XLS; "
6400 L1$="C1L21BU20L15R35BU15L45BU12L9R5
4BU10L61BU7L5R66BU6L69BU5L5R73"
6410 DRAW"BM255, 185XL1S; "
6420 LINE(17, 191) - (75, 110) , 1
6430 LINE(238,191)-(180,110),1
6440 PSETÍ86, 118) ,4:PRINT#1, "CREADO POR:
■
6450 PSET (87, 118) , 4: PRINT#1 , "CREADO POR"
6460 PSET (74, 138) , 4: PRINTt 1 , " José Menénd
ez-:PSET(75, 138) ,4: PRINTt 1 , • José Menénde
z"
6470 PUT SPRITE 2, (112, 75), 15, 15
6480 PSEK38, 170) , 4: PRINTt 1 , (Un iOiento
por favor)"
6490 ■■■■ SPRITES
6500 FOR N=0 TO 43:A$="
6510 FOR 1=1 TO 32: READ D: A$=A$+CHR$ (D) :
NEXT I
6520 SPRITE$(N)=A$:NEXT N
6530 LINE(38,170)-(210,185),11,BF
6540 PUT SPRITE 2, (112, 75),
6550 BEEP:PSET(42,170):PRINTIl,-¿Instruc
ciones? (s/n)
6560 K$=INPUT$(1)
6570 IF K$="N" OR Kf=V THEN 140
6580 IF K$='S" OR K%='s a THEN 7050
6590 IF K$-" "THEN 6560
6600 DATAS —m
6610 DATA 0,0,1,1,1,7,3,3,131,65,45,30,3
1,31,31,15,0,0,0,192,192,240,224,224,224
,192,240,248,124,182,222,238
6620 DATA 0,0,0,0,15,10,7,7,7,6,14,12,12
,30,12,28,0,0,0,0,248,168,240,240,112,48
,56,24,24,60,24,28
6630 DATA 0,0,0,1,1,7,3,3,3,7,13,14,15,1
5,7,7,128,128,128,192,192,240,224,224,22
4,240,248,248,120,184,208,224
6640 DATA 0,0,0,0,15,10,7,7,7,7,14,14,12
,30,12,28,0,0,0,0,248,168,240,240,112,11
2,48,48,48,120,48,112
6650 DATA 0,0,8,14,15,56,16,8,8,1,15,23,
27, 29, 30, 31, 0,0,1, 2 : 132,8, 24, 56,240,176,
240,224,128,128,128,0
6660 DATA 0,0,0,0,63,42,31,31,29,24,56,4
8,112,224,96,120,0,0,0,0,192,192,128,128
,192,192,224,96,96,240,96,120
6670 DATA 0,0,128,64,33,16,24,28,15,13,1
5,7,1,1,1,0,0,0,16,112,240,28,8,16,16,12
8,240,232,216,184,120,248
6680 DATA 0,0,0,0,3,3,1,1,3,3,7,6,6,15,6
,30,0,0,0,0,252,84,248,248,184,24,28,12,
14,7,6,30
6690 DATA 0,0,32,56,62,192,64,32,32,0,63
,95,110,115,122,124,16,16,16,16,16,16,48
,96,224,176,48,48,48,0,0,0
6700 DATA 0,0,0,0,0,0,0,0,0,0,4,7,7,30,1
5,15,0,0,0,0,0,0,0,0,0,0,0,0,192,128,192
,128
6710 DATA 0,0,0,0,0,0,0,56,62,233,12,6,3
,1,0,0,0,0,0,0,0,0,96,240,184,248,241,59
,246,238,94,62
6720 DATA 0,0,0,0,0,0,0,0,1,3,39,31,30,8
,0,0,0,0,0,0,255,171,126,254,252,232,192
,0,0,0,0,0
6730 DATA 71,40,16,32,67,129,129,255,85,
43,31,31,7,127,97,243,225,146,12,132,226
, 193, 129, 255, 86, 172, 248, 248, 224, 254, 134,
207
6740 DATA 0,0,0,0,0,2,2,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
6750 DATA 103,16,20,148,4,6,39,37,5,71,0
,0,32,16,8,12,192,4,136,0,38,32,32,37,4,
0,0,60,5,4,32,16
DATA 0,0,0,3,0,0,0,1,3,3,7,7,15,255
, 249, 3, 64, 64, 224, 248, 240, 248, 225, 230, 236
,240,128,240,240,224,192,224
6770 DATA 0,3,5,7,2,3,1,2,1,0,9,4,9,242,
2,2,0,128,65,194,132,8,16,32,64,128,64,1
28,0,0,0,128
6780 DATA 0,0,0,64,64,105,127,127,63,53,
M.M.M.M,*. 1.129,213,255,255,254,
214,192,128,0,0,0,0
6790 DATA 0,0,0,0,0,7,15,25,25,15,63,73,
73,73,146,36,0,0,0,0,0,240,248,200,200,1
20,254,37,37,37,20,18
6800 DATA 0,0,96,120,122,127,127,127,7,3
,3,4,8,0,0,0,0,0,12,60,188,252,252,252,1
92,128,128,64,32,0,0,0
6810 DATA 0,0,6,30,63,254,243,233,227,24
7,29,12,26,15,0,0,0,0,192,240,248,254,15
8,46,142,222,112,80,176,224,0,0
6820 DATA 0,0,0,3,3,15,0,0,0,0,31,63,63,
111,111,63,0,0,128,128,128,225,2,4,8,16,
240,248,248,236,236,248
6830 DATA 0,0,0,0,63,42,31,31,29,29,253,
247, 161, 131, 1, 1,0,0,0,0, 192, 192, 128, 128,
192,224,224,192,128,192,128,224
6840 DATA 0,0,0,0,3,3,1,1,3,7,7,3,1,3,1,
7,0,0,0,0,252,84,248,248,184,184,191,31,
133,193,128,128
6850 DATA 0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,
1,0,0,0,0,255,171,126,126,238,207,199,23
1,230,255,230,254
6860 DATA 0,0,0,0,0,5,15,7,7,6,0,0,0,0,0
,0,0,0,0,0,0,0,128,0,0,0, 0,0,0,0,0,0
6870 DATA 0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,192,240,224,224,96,0,0,0,0,0
6880 DATA 0,0,0,0,0,0,5,7,7,3,0,0,0,0,0,
0,0,0,0,0,0,0,64,192,192,128,0,0,0,0,0,0
6890 DATA 129,99,165,39,55,63,63,31,15,1
5,15,15,15,15,15,31,2,140,74,200,216,248
, 240, 224, 224, 224, 224, 224, 224, 224, 224, 240
6900 DATA 5,5,5,37,39,31,31,95,127,63,63
,31,31,31,31,14,128,128,128,0,0,128,128,
128,128,224,224,224,192,192,128,0
6910 DATA 8,8,8,15,15,15,127,127,0,0,0,0
,0,0,0,0,0,0,0,240,240,240,254,254,0,0,0
,0,0,0,0,0
6920 DATA 0,0,0,0,0,0,0,0,15,31,31,15,15
,7,7,3,0,0,0,0,0,0,0,0,240,248,248,240,2
40,224,224,192
6930 DATA 0,0,0,0,0,0,0,0,3,7,39,57,121,
254,254,255,0,0,0,0,0,0,0,0,192,252,254,
1
255,255,127,127,159
6940 DATA 16,8,4,15,15,15,127,127,0,0,0,
0,0,0,0,0,0,0,0,240,240,240,254,254,0,0,
0, 0,0,0,0,0,
6950 DATA 0,0,0,0,0,0,0,0,31,31,31,30,14
,6,6,0,0,0,0,0,0,0,0,128,128,128,0,0,0,0
,9
6960 DATA 0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,
3,0,0,0,0,0,0,0,0,96,112,120,112,96,112,
112,128
6970 DATA 0,0,0,0,0,0,0,0,7,7,15,15,31,3
liliiHiMAiAMÁ «JWMum
252,254,239,239
6980 DATA 0,0,0,15,15,15,127,127,0,0,0,0
,0,0,0,0,8,16,32,240,240,240,254,254,0,0
,0,0,0,0,0,0
6990 DATA 0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,
0,0,0,0,0,0,0,0,0,248,248,248,120,112,96
,96,0
7000 DATA 0,0,0,0,0,0,0,0,6,14,30,15,7,1
5,15,3,0,0,0,0,0,0,0,0,0,0,0,128,128,128
,128,192
7010 DATA 0,0,0,0,0,0,0,0,3,7,15,31,63.1
27,247,231,0,0,0,0,0,0,0,0,224,224,240,2
40,248,248,248,248
, r ¿ ,
7020 DATA 0,0,0,0,0,0,0,0,3,39,39,57,57,
62,62,63,0,0,0,0,0,0,0,0,192,252,252,252
,252,124,124,156
7030 DATA 0,31,23,3,195,114,123,63,63,31
,15,15,15,31,63,127,0,0,193,225,243,215,
255, 255, 255, 255, 254, 252, 252, 252, 252, 254
7040 DATA 128,113,145,17,16,16,31,5,7,0,
7,3,4,8,8,56,193,230,85,228,196,196,252,
208,240,128,224,192,32,16,16,28
7050 INSTRUCCIONES M"
7060 COLOR l,U,UiCLS
7070 DR AW - BH50 , ■ : PR I NT« 1 , ■ ### INSTRUCCI
ONES !••'
7080 DRAW'BH5,20":PRINTil," Tienes que e
1 i linar a una peí i-grosa secta que habí t
a en una aansión tenebrosa.
Dispa
, ra contra todos los seres que se crucen
en tu caaino hasta llegar al refugio de
las brujas.'
7090 DRAH'BH6,90'¡PRINT*1," En el refugi
o activa el leca- nisio de relojería y
escapa coao un rayo para que no te alca
nce la explosión.
Puedes usa
r el joystick ó las teclas del cursor y
la barra.
7100 FOR 1=0 TO 12000:NEXT I
7110 LINE(0,10)-(256,191),11,BF
7120 DRAW"BM5,30":PRINT#1," Para dispara
r apunta en la di- rección deseada y al
■ísdio tiea-po pulsa el botón de disparo
ó la barra.
7130 DRAW-BH6,70":PRINT#1,- Para saltar
(pantalla 4) pulsa el botón ó la barra.
Para activar el aecamsao de reloj
eria aproxiaate a él, ac-ciona hacia a
bajo el joystick ó el cursor y sal de la
habitación.'
7140 FOR 1=0 TO 10000:NEXT I: GOTO 270
7150 LINE(90,30)-(175,40),15,BF
7160 BEEP
7170 DRAH"BM100,32":COLOR 1 : PRINTH1 , "GAM
E OVER"
7180 PLAY'DFEDCDFEDCEE"
7190 FOR 1=0 TO 3000: NEXT I
7200 IF P=l THEN 880 ELSE 140
_
TEST DE LISTADO
Para utilizar el Test de Listados que ofrecemos al final de cada programa, recordamos que previamente hay
que cargar en el ordenador el Programa correspondiente aparecido en nuestro número 1 0, de octubre , pág. 29.
10
- 58
250 -184
490 - 92
730 -144
970
- 58
1210
- 27
1450
-196
1690
-134
1930
-181
2170
-135
2410
- 92
20
- 58
260 -146
500 - 82
740 -248
980
-134
1220
- 46
1460
-166
1700
- 90
1940
-241
2180
-214
2420
-127
30
- 58
270 -112
510 - 52
750 - 64
990
-234
1230
- 45
1470
- 46
1710
-130
1950
- 6
2190
-150
2430
-107
40
- 58
280 -206
520 - 28
760 -101
1000
-126
1240
-171
1480
-204
1720
-133
1960
- 49
2200
- 97
2440
-106
50
- 58
290 -200
530 - 4
770 -249
1010
- 74
1250
-217
1490
-140
1730
-221
1970
- 9
2210
- 82
2450
-120
60
- 58
300 - 9
540 - 80
780 - 56
1020
- 23
1260
-147
1500
-196
1740
- 50
1980
- 51
2220
-245
2460
- 97
70
- 58
310 - 78
550 -136
790 -245
1030
- 8
1270
-212
1510
-163
1750
-155
1990
- 64
2230
-150
2470
-111
80
- 58
320 - 6
560 -232
800 -121
1040
-145
1280
- 49
1520
- 47
1760
-125
2000
- 85
2240
-161
2480
-215
90
- 58
330 -135
570 - 78
810 - 83
1050
-205
1290
- 88
1530
-204
1770
-188
2010
- 7
2250
-
2490
-123
100
- 58
340 - 91
580 - 83
820 -168
1060
-198
1300
-222
1540
-106
1780
- 98
2020
-223
2260
-136
2500
- 5
110
- 15
350 - 13
590 - 91
830 -184
1070
- 2
1310
- 21
1550
-146
1790
-220
2030
- 60
2270
-222
2510
- 58
120
-206
360 - 70
600 - 86
840 -204
1080
-233
1320
-171
1560
-133
1800
- 74
2040
- 45
2280
- 35
2520
-119
130
-241
370 -252
610 - 85
850 -171
1090
-115
1330
- 7
1570
-113
1810
-184
2050
-178
2290
-237
2530
- 46
140
- 58
380 -220
620 - 99
860 -185
1100
-122
1340
-245
1580
- 20
1820
- 38
2060
-220
2300
- 38
2540
-210
150
- 56
390 -191
630 - 98
870 -204
1110
- 2
1350
-189
1590
- 46
1830
-181
2070
-164
2310
-129
2550
-134
160
-111
400 -205
640 -170
880 - 75
1120
-110
1360
-204
1600
- 45
1840
- 75
2080
-171
2320
-213
2560
- 49
170
-168
410 -202
650 - 68
890 - 23
1130
- 82
1370
-130
1610
-171
1850
-103
2090
- 74
2330
-101
2570
-175
180
-225
420 -151
660 -204
900 -203
1140
- 58
1380
- 5
1620
-218
1860
-136
2100 -245
2340
- 49
2580
- 71
190
-119
430 -239
670 - 20
910 -241
1150
-211
1390
- 58
1630
- 88
1870
- 46
2110
-189
2350
- 83
2590
- 84
200
-250
440 -190
680 - 26
920 - 16
1160
-239
1400
-134
1640
- 65
1880
-106
2120
-204
2360
- 99
2600
- 98
210
-181
450 -241
690 - 32
930 -171
1170
- 80
1410
-234
1650
- 58
1890
- 88
2130
-167
2370
- 91
2610
-186
220
-134
460 -243
700 -148
940 -217
1180
- 55
1420
-130
1660
- 62
1900
-219
2140
-128
2380
-106
2620
-189
230
-234
470 -230
710 -247
950 -148
1190
- 27
1430
- 75
1670
-190
1910
- 81
2150
- 58
2390
- 81
2630
- 37
240
- 21
480 - 94
720 - 65
960 -199
1200
- 49
1440 -222
1680
-186
1920
- 39
2160
-211
2400
- 96
2640
- 55
9 m # ti» 4
liil
. ■ | I.
rKubKni leu
2650
- 80
3070
- 92
3490
- 71
3910
- 46
4330
- 24
4750
-140
5170
- 5
5590
-204
6010
- 58
6430
-228
6850
-210
2660
-245
3080
-171
3500
- 77
3920
-141
4340
- 20
4760
-195
5180
-214
5600
-147
6020
-144
6440
-179
6860
-146
2670
- 80
3090
- 62
3510
- 78
3930
-136
4350
-245
4770
-166
5190
-150
,5610
-211
6030
-246
6450
-122
6870
-186
2680
- 91
3100
- 49
3520
- 79
3940
-204
4360
- 69
4780
- 32
5200
- 45
5620
- 58
6040
-198
6460
-33
6880
-107
2690
-186
3110
- 83
3530
- 80
3950
-216
4370
- 15
4790
- 78
5210
-192
5630
- 25
6050
- 22
6470
-163
6890
-163
2700
-136
3120
- 96
3540
- 81
3960
-235
4380
-213
4800
- 62
5220
- 7
5640
-164
6060
- 45
6480
- 96
6900
- 76
2710
-171
3130
- 57
3550
- 82
3970
-160
4390
-206
4810
-127
5230
-203
5650
-194
6070
- 68
6490
- 58
6910
-110
2720
-132
3140
- 48
3560
- 83
3980
-101
4400
- 49
4820
-165
5240
-129
5660
-225
6080
- 81
6500
-181
6920
- 61
2730
-148
3150
- 75
3570
- 99
3990
- 40
4410
- 9
4830
-206
5250
- 23
5670
-192
6090
- 58
6510
-205
6930
- 91
2740
-108
3160
- 63
3580
- 63
4000
- 51
4420
-179
4840
- 22
5260
- 52
5680
-213
6100
- 79
6520
-233
6940
-197
2750
- 98
3170
- 80
3590
-127
4010
- 58.
4430
- 67
4850
- 18
5270
-213
5690
-156
6110
-208
6530
- 44
6950
-205
2760
-126
3180
- 58
3600
-245
4020
- 19
4440
- 88
4860
- 27
5280
-156
5700
- 10
6120
-142
6540
- 76
6960
-187
2770
-114
3190
- 69
3610
-171
4030
-164
4450
- 75
4170
- 40
5290
- 10
5710
-158
6130
-247
6550
- 42
6970
-122
2780
-125
3200
-237
3620
- 62
4040
-108
4460
- 58
4880
-204
5300
-158
5720
- 70
6140
-210
6560
-106
6980
-202
2790
-108
3210
- 35
3630
- 40
4050
- 70
4470
-119
4890
- 49
5310
- 70
5730
-160
6150
-142
6570
-246
6990
-106
2800
-120
3220
-101
3640
- 51
4060
- 74
4480
- 46
4900
- 9
5320
-160
5740
-132
6160
-213
6580
- 25
7000
-10
2810
-101
3230
-213
3650
- 58
4070
-135
4490
-134-
4910
- 51
5330
-132
5750
-162
6170
-142
6590
-206
7010
- 22
2820
-213
3240
-229
3660
-192
4080
- 86
4500
-190
4920
- 65
5340
-162
5760
-242
6180
-145
6600
- 58
7020
-190
2830
-237
3250
- 38
3670
-251
4090
-217
4510
-186
4930
- 86
5350
- 49
5770
-204
6190
- 56
6610
- 33
7030
-111
2840
- 35
3260
-204
3680
-148
4100
-189
4520
-210
4940
-179
5360
- 35
5780
-199
6200
-122
6620
- 43
7041
= 1
2850
- 38
3270
-251
3690
- 19
4110
-220
4530
- 68
4950
- 15
5370
- 29
5790
- 78
6210
- 58
6630
-111
7050
- 58
2860
-204
3280
- 68
3700
-164
4120
-204
4540
-175
4960
-213
5380
- 44
5800
-204
6220
-253
6640
-192
7060
- 52
2870
- 62
3290
- 49
3710
-197
4130
- 35
4550
- 8
4970
-144
5390
- 45
5810
-201
6230
- 80
6650
-217
7070
-125
2880
- 14
3300
- 83
3720
-183
4140
- 63
4560
- 20
4980
- 75
5400
- 59
5820
- 58
6240
-106
6660
-121
7080
- 18
2890
- 70
3310
- 96
3730
-189
4150
- 22
4570
- 98
4990
- 69
5410
-211
5830
-155
6250
- 94
6670
-148
7090
-147
2900
- 58
3320
-107
3740
- 63
4160
-111
4580
-186
5000
- 70
5420
- 58
5840
-234
6260
-228
6680
-110
7100
-212
2910
-140
3330
-189
3750
-140
4170
-
4590
-190
5010
-164
5430
-186
5850
-129
6270
- 97
6690
-235
7110
-140
2920
-195
3340
-123
3760
-151
4180
- 19
4600
- 22
5020
- 58
5440
-167
5860
-140
6280
-186
6700
- 55
7120
- 78
2930
-120
3350
-180
3770
-
4190
-251
4610
-239
5030
- 19
5450
- 35
5870
-129
6290
-151
6710
- 99
7130
-207
2940
- 62
3360
-171
3780
-136
4200
-101
4620
- 37
5040
-234
5460
- 60
5880
-116
6300
- 45
6720
-108
7140
-221
2950
- 68
3370
- 62
3790
- 70
4210
- 67
4630
-245
5050
- 31
5470
- 69
5890
-181
6310
-233
6730
-107
7150
- 36
2960
-251
3380
-237
3800
- 87
4220
- 40
4640
- 69
5060
-245
5480
-203
5900
-226
6320
- 59
6740
-220
7160
-192
2970
-253
3390
- 35
3810
-245
4230
- 51
4650
-206
5070
- 69
5490
-162
5910
-244
6330
-133
6750
-222
7170
-130
2980
-255
3400
-101
3820
-204
4240
- 58
4660
- 58
5080
-133
5500
-192
5920
- 64
6340
-251
6760
- 52
7180
- 59
2990
-254
3410
-213
3830
-189
4250
-214
4670
-100
5090
- 26
5510
-213
5930
-119
6350
- 16
6770
- 21
7190
-137
3000
-
3420
-204
3840
-211
4260
-193
4680
-114
5100
- 22
5520
-152
5940
-102
6360
-255
6780
- 75
7200
-172
3010
_ 9
i
3430
- 64
3850
-199
4270
-211
4690
-135
5110
-204
5530
- 10
5950
- 58
6370
-142
6790
-195
3020
- 4
3440
- 65
3860
- 66
4280
-135
4700
- 15
5120
- 75
5540
-154
5960
- 73
6380
-120
6800
-252
3030
- 5
3450
- 66
3870
-142
4290
-214
4710
-213
5130
- 58
5550
- 70
5970
-227
6390
-142
6810
-204
3040
-250
3460
- 67
3880
- 70
4300
-150
4720
-204
5140
- 87
5560
-156
5980
- 22
6400
-145
6820
- 46
3050
-167
3470
- 68
3890
-245
4310
- 49
4730
- 62
5150
- 23
5570
-132
5990
-243
6410
- 43
6830
-203
TOTAL:
3060
-180
34B0
- 69
3900
- 35
4320
- 37
4740
-142
5160
-211
5580
-158
6000
-129
6420
-158
6840
-164
88065
ENTRA EN LA AVENTURA
CORRE A TODA PASTILLA
CON
••«•a ijei »a mu » r
DE MANHATTAN TRANSFERS, S.A.
>0
JZ*Qi T íOC
IRTU tí l-i
BUSCA LA PAEEJA
Programa de juego por José R. García Espine ira
Agrupar las cartas de dos en dos parece fácil; pero precisarás de una gran
cantidad de memoria para ganar al ordenador con este juego. Si queréis un
consejo: no utilicéis el nivel 6 si os gusta ganar.
* ■
1 4
■ ■
■ ■ ■ ■
3"> 35 3€ 3 ? 33 3? ■* •
10 REH
20 REH — presentación —
30 REH
40 SCREEN 0,0,1:KEY 0FF:CLS
50 COLOR 15,1,0
60 PR$="BUSCA LA PAREJA':C=10
70 FOR J=l TO 15:001
80 LOCATE C,5:PRINT HID$(PR*,J,1)
90 FOR 1=1 TO 55:NEXT I,J
100 LOCATE, 7: PRINT STRING$ (37 , ScHC2)
110 LOCATE 5,10:PRINT 'Escrito por: JOSE
ESPIREIRA"
120 LOCATE 16,22:PRINT 'USX'
130 LOCATE 6,13:PRINT 'Piedras Blancas-A
STURIAS'
140 LOCATE 14, 15: PRINT '25-4-85'
150 LOCATE 8,20:PRINT '--PULSA UNA TECLA
__■
160 T$=INKEY$:IF T$=" THEN 160
170 REH
180 REH — prograia —
190 REH
200 CLEAR
210 PR$='BUSCA LA PAREJA'
220 H$= B 122cdefgab"
230 PLAY H*:F0R N=22 TO 50:PRINT:NEXT
240 CLS:C0L0R 15,4,4:L0CATE 10,1:PRINT P
M
250 LOCATE 2, 10:PRINT'NECESITAS INSTRUCI
ONES (S/N) ■
260 0$=INKEY$:IF M»" THEN 260
270 IF Q$='s* OR Q$='S" THEN GOSUB 2060
280 CLS:LOCATE 10,1jPRINT PR$:PLAY Ht
290 IF TT THEN CLEAR: SCREEN §
300 LOCATE 2,10:PRINT'ELI6E UNO DE LOS N
I VELES (DE 1 A 6)
310 LOCATE 2,15:PRINT "NIVEL lsFACILINIV
EL 6:HUY DIFICIL"
320 Q$=INKEY$: IF 0$="" THEN 320
330 FOR J=l TO 678:NEXT
340 FOR 1=1 TO 26:PRINT:PLAY '135ac':NEX
T
350 I=VAL(0$):IF Kl OR I>6 THEN 320
360 NI=I:PLAY Of
370 OPEN •grp:' AStl
380 DIH A(40),H(40),6(10)
390 TU$='TU TURNO"
400 HI$="HI TURNO"
410 TP$="TUS PUNTOS:"
420 HP$='HIS PUNTOS:"
430 O=105:O1=143:CE=0
440 AH=173:AB=178:T=1
450 DI=17:VE=23:CU=40
460 CI=50:TR=32:SP=1
470 DL=1000:R=0:S=0
480 FOR J=l TO 1 : READ 6(J):NEXT
490 FOR J=l TO I:T=T$2:NEXT
500 IF T>CU THEN T=CU
510 SCREEN 2,2
520 FOR J=l TO 23: READ N*
530 D$=D$+CHR$(VAL('fch'+N$))
540 NEXT
550 SPRITE$(1)=STRIN6$(8,255)
560 SPRITE$(3)=D$
570 CLS: PRESET ( 100, 70) : PRINTI1 , "NI VEL: " ;
NI
580 FOR J=CE TO DL: NEXT: COLOR 15,12,5:CL
S
590 LINE (CE,191)-(255,CE),1,B
600 LINE (8,186)-(247,166),5,BF
610 LINE (8,186)-(247,166),1,B
620 LINE (127,1B5)-(131,167),1,BF
630 LINE(30,166)-(30,186),1
640 LINE (225, 166) - (225, 186) , 1
650 C=l:F0R J=29 TO 180 STEP TR
660 FOR 1=4 TO 240 STEP TR
670 PRESET (I,J):PRINTIl,C:C=C*l:PLAY"14
6ag*
680 NEXT I,J
690 FOR I»l TO CU:A(I)=INT(I/2*.5):H(I)=
CE: NEXT
701 FOR 1*1 TO CU
710 J=RND(-TIHE)tCUM:C=A(J):A(J)=A(I):A
(I)=C
720 NEXT
730 FOR 1=7 TO 240 STEP TR
740 FOR J=4 TO 140 STEP TR
750 LINE (I, J)-(I+DI, J+VE) , 1 1 , BF
760 LINE (I,J)-(I+DI,J+VE),1,B:BEEP
770 PRESET ( 1+5, J*5) : PRINTil , CHR$( 1 ) ;CHR$
(IH42)
780 PRESET ( 1*5, J+13) : PRINTil, CHR$ (lcHD2)
790 PLAY "154ga"
800 NEXT J,I
810 PRESET (CU,AB-4):PRINT*1,TU$
820 PRESET (O+50,AH*1):PRINTI1,HI$
830 PLAY "L22AB"
840 60SUB 1530
850 B=E
860 PLAY "L22o5BA"
870 GOSUB 1530
880 IF B=E THEN 860
890 FOR I=CE TO DL: NEXT
900 Z=1:60SUB 1740
910 IF R+S=20 THEN 1260
920 IF Z=CE THEN 830
930 GOSUB 1910
940 PUT SPRITE 1,(01,AH),9
950 FOR 1=1 TO T-l
960 B=H(I)
970 IF B=CE OR A(B)=CE THEN 60T0 1030
980 FOR J=I+1 TO T
990 E=H(J)
1000 IF E=CE OR B=E OR A(E)=CE THEN 1020
1010 IF A(B)=A(E) THEN 1210
1020 NEXT J
1030 NEXT I
1040 IF R*S=20 THEN 1980
1050 B=INT(RND(-TIHE)tCU*l>
1060 IF A(B)=CE THEN 1040
1070 FOR I«CE TO T
1080 IF H(I)*B THEN 1040
1090 NEXT
1100 FOR 1=1 TO T
1110 E=H(I)
1120 IF A(B)=A(E) THEN 1210
1130 NEXT
1140 E*INT(RND(-TIHE)$CU+1)
-
JDOfflOC
ifsiil II I-'
1150 IF B=E OR A(E)=CE THEN 1140
1160 FOR 1=1 TO T
1170 IF H(I)=E THEN 1140
1180 NEXT
1190 IF A(B)=A(E) THEN 1210
1200 BOSUB 1910
1210 2=2
1220 GOSUB 1680
1230 IF R+S=CU/2 THEN 1260
1240 IF Z=CE THEN 940
1250 60T0 830
1260 FOR 1=1 TO DL: NEXT
1270 LINE <3,74)-(252,5),4,BF
1280 PRESET ( 15, 20) : PRINTtl , TP$; R
1290 PRESET ( 15, 40) : PRINTtl , MP$; S
1300 LINE (2,165)-(253,75),10,BF
1310 PRESET ( 15, 65) : PRINTtl , "ELIGE LA OP
CI0N(l-2-3)"
1320 PRESET (CI,85):PRINTtl,'l-0TRA PART
IDA"
1330 PRESET (CI, 115) :PRINTtl, "2-VOLVER H
ENU"
1340 PRESET <CI, 144) ¡PRINTtl, "3-TERMINAR
■
1350 TIHE=CE
1360 IF TIME>DL$2 THEN 1410
1370 9$=INKEY$:IF Q$="" THEN 1360
1380 R=CE:S=CE
1390 IF VAL(Q$)<1 OR VAL(Q$)>3 THEN 1360
1400 ON VAL(9$)G0T0 570, 1420, 1410: GOTO 1
370
1410 60TO 2120
1420 TT=1:60T0 280
1430 REH
1440 P=INT((N-l)/8):Y=4+TRtP:X=7+TRt(N-P
18-1) ¡PLAY -L33DA-
1450 IF L=CU THEN LINE ( X , Y) - ( X+DI , Y+VE )
,6,BF:LINE (X, Y) - (X+DI , Y+VE) , 1 , B: PRESET (
X+5,Y+4) : PRINTtl, CHR*(1) ;CHR$(fcH5C)¡PRES
ET(X+5,Y+12) ¡PRINTtl, CHR$ ( 1 ) ; CHR$ ( &H5C ) :
RETURN
1460 IF L=CI THEN LINE ( X , Y) - ( X+DI , Y+VE*
9), 12, BF: RETURN
1470 C=INT(L/10):F=L-CI10
1480 LINEÍX, Y)-(X+DI, Y+VE) , 15,BF
1490 LINE (X,Y)-(X+DI, Y+VE),1,B
1500 LINE <X+3, Y+3)-(X+DI-3,Y+VE-3) , 1+Ct
4, BF
1510 PRESET (X+6,Y+8):PRINTtl,CHR$(G(F) )
¡PLAY "L22F'
1520 RETURN
1530 B$="¡TIHE=CE
1540 IF TIHE>DL-100 THEN 940
1550 IF TIHE>640 AND TIHE <755 THEN PLAY
"164o7b" ELSE 1570
1560 PUT SPRITE 1, (0,AH) , l:FOR J=CE TO V
E : NEXT
1570 PUT SPRITE 1,(0,AH),9
1580 E$=INKEY$:IF E$=" THEN 1540
1590 IF E$=CHR$(13) THEN 1610
1600 B*=B*+E$:GOTO 1540
1610 E=VAL(B$)
1620 IF E<1 OR E>CU THEN 1540
1630 IF A(E)=CE THEN 1530
1640 L=A(E)-1
1650 N=E
1660 GOSUB 1440
1670 RETURN
1680 N=B:L=A(B)-1
1690 GOSUB 1440
1700 FOR 1=1 TO DL: NEXT
1710 N=E:L=A(E)-1
1720 GOSUB 1440
1730 FOR 1=1 TO DL:NEXT
1740 IF A(B)=A(E) THEN 1800
1750 L=CU:N=B
1760 GOSUB 1440
1770 N=E
1780 GOSUB 1440
1790 RETURN
1800 L=CI:N=B:A(B)=CE
1810 GOSUB 1440
1820 N=E:A(E)=CE
1830 GOSUB 1440
1840 IF Z=l THEN R=R+1
1850 IF Z=2 THEN S=S*1
1860 LINE(9,184)-(28,168),5,BF
1870 LINEÍ227, 184) - (245, 168) , 5, BF
1880 PRESET (5, 173) : PRINTtl, R
1890 PRESET(222, 173) ¡PRINTtl, S
1900 Z=CE: RETURN
1910 IF T=2 THEN 1960
1920 FOR 1=3 TO T
1930 H(I-2)=M(I)
1940 NEXT
1950 N(T-1)=B
1960 H(T)=E
1970 RETURN
1980 FOR 1=1 TO CU
1990 IF A(I)=CE THEN NEXT I
2000 B=I
2010 FOR J=I TO CU
2020 IF A(J)=CE THEN NEXT J
2030 E=J
2040 60TO 1210
2050 REH — instruciones —
2060 PLAY H$: LOCATE ,7:PRINT 'EL JUEGO C
ONSISTE EN ENCONTRAR LA PAREJA DE CAD
A UNA DE LAS CARTAS DE LA NESA,SI ACIE
RTAS SIGUES JUGANDO HASTA QUE PIERDAS, S
INO ACIERTAS O PIERDES, ENTONCES J
UGARE YO"
2070 PRINT: PRINT: PRINT: PRINT "PRIMERO IN
TRODUCES EL NUHERO DE UNA CARTA Y PULSA
S<RETURN> Y DESPUES EL SEGUNDO Y PULSA
<RETURN> DE NUEVO"
2080 LOCATE 5,22¡PRINT "Heioria ocupada'
;28815-FRE(7);'byts"
2090 TIHE=CE
2100 IF TIHE>2000 THEN 280
2110 Q$=INKEY$¡IF Q$=" THEN 2100 ELSE R
ETURN
2120 SCREEN 3
2130 PRESET ( 77 , 75 ) : PR I NT 1 1 , " F I N "
2140 PUT SPRITE 3, (45, 75), 11
2150 Q*=INKEY$:IF Q$=" THEN 2150
2160 RUN
2170 DATA 157,188,191,74,81,75,234
2180 DATA 240,146,241,77,44,62,41
2190 DATA 77,0,0,72,50,72,42,42,0
2200 DATA 0,0,7e,67,94,94,62,91,91,66
10 - 90 -103 170 -
250
-165
330 -
39
410
- 26
490
-131
570
-219
650
-131 730
- 44
810
-91 890
-104
970
- 1
20 - 100 - 32 180 -
260
-170
340 -
45
420
-
500
- 26 580
-224
660
- 41 740
-198
820
- 56 900
- 2
980
- 52
30 - 110 -206 190 -
270
- 33
350 -
15
430
-110
510
- 23
590
- 51
670
-209 750
-197
830
- 56 910
- 11
990
- 28
40 - 27 120 - 79 200 -146
280
- 5
360 -
¿1
440
- 53
520
- 8
600
- 46
680
- 66 760
-113
840
-154 920
-133
1000
-224
50 - 86 130 - 91 210 -167
290
-175
370 -
64
450
-126
530
-184
610
-228
690
-219 770
- 75
850
-118 930
- 24
1010
-203
60 - 44 140 -176 220 - 48
300
-132
380 -
45
460
-120
540
-131
620
- 43
700
- 61 780
-174
860
-220 940
-137
1020
-205
70 -118 150 -213 230 -251
310
-140
390 -
65
470
-159
550
-196
630
-177
710
-203 790
-162
870
-154 950
-253
1030
-204
80 -117 160 - 75 240 - 48
320
-230
400 -
27
480
- 31
560
-167
640
- 55 720
-131 800
- 66
880
- 72 960
- 24
1040
-222
I) I
* m
i isUüKnuru
1050
- 41
1160
-249
1270
- 30
1380
-205
1490
-179
1600
-240
1710
-210
1820
- 10
1930
-194
2040
- 85
2150 - 19
1060
-210
1170
- 6
1280
- 2
1390
-117
1500
- 75
1610
-126
1720
- 64
1830
- 64
1940
-131
2050
-
2160 -138
1070
-111
1180
-131
1290
- 16
1400
-125
1510
- 40
1620
-134
1730
-242
1840
- 86
1950
- 39
2060
-175
2170 - 62
1080
-159
1190
-203
1300
-193
1410
-231
1520
-142
1630
-192
1740
- 28
1850
- 89
1960
- 38
2070
-132
2180 -247
i ana
10T0
-131
1200
- 24
1310
- 26
1420
-147
1530
- ?!
1640
- 22
1750
-140
1860
- 84
1970
-142
2080
- 76
2190 -229
1100
-249
1210
- 92
1320
- 57
1430
-
1540
-208
1650
-130
1760
- 64
1870
- 5
1980
- 61
2090
- 66
2200 -251
1110
- 27
1220
- 49
1330
- 48
1440
-191
1550
-114
1660
- 64
1770
-130
1880
-144
1990
-131
2100
- 56
1120
-203
1230
-135
1340
-157
1450
-223
1560
-254
1670
-142
1780
- 64
1890
-104
2000
-122
2110
- 74
1130
-131
1240
-243
1350
- 66
1460
-
1570
- 88
1680
-204
1790
-142
1900
-153
2010
-117
2120
-217
1140
- 44
1250
-216
1360
- 73
1470
- 92
1580
-151
1690
- 64
1800
- 5
1910
-120
2020
-133
2130
- 67
TOTAL:
1150
-166
1260
-242
1370
-250
1480
- 5
1590
- 29
1700
-242
1810
- 64
1920
-251
2030
-126
2140
- 19
24397
—
—
G R A P H I C|
Programa de utilidad por Javier Sánchez
Este programa demuestra las grandes posibilidades de las pequeñas rutinas
en ensamblador añadidas a nuestros programas. Interesante programa para
*°^ar de él buena» ideas para vues tros programas.
mf inimif nrmun
SRAPHIC
(0 Javier Sánchez
para HSX-EXTRA
immnmmmmu
II
20
30
40
50
60
70 »
80 CLEAR200,*H9C06
90 ON INTERVAL'700 GOSUB 1700
100 KEY OFF
110 COLOR 15,l,liBCREENl,l
120 GOSUB 610
130 GOSUB 820
140 GOSUB 1010
150 GOSUB 900
160 GOSUB 1110
170 GOSUB 1330
180 U*USR3(U): INTERVAL ON
190 IF INKEYfOCHRim) THEN 190 '
210 ' MENU
210 INTERVAL OFFiLINE<0,0)-(255, 192) , l,B
F
220 FOR 1*0 TO 4:LINE 11,1) -(255-1, 192-1
>,6,B¡NEXTsLINE(10,90)-(246,180),7,B
230 LINE (90,10)-(155,22),15,BF:LINE (90
,28)-(155,40),4,BF
240 PLAY H5$
250 COLOR 1 ¡ DRAWBM95, 12*: PRINTil , «GRAPH
IC" : DRAWBH96, 12' : PRINTil , "6RAPHIC"
260 COLOR 15sDRAN'BHlll,30'jPRINTIl,'HSX
■iDRAH'BH112,30'!PRINTll,"HSX"
270 COLOR 11 1 DR AN ' C 1 BH 1 00 , 72 a i PRINTIl , "E
LIGE:":COLOR 12
280 DRAW"BM15, 1 00" : PR INTi 1 , "F 1 - VER GRA
FICO EN C/H"
290 DRAW-BM15, 1 1 5 " : PR I NT# 1 , "F2 - GRABAR
GRAFICO EN C/H"
300 DRAWBM15, 130" : PRINT#1 , "F3 - CAHBIAR
COLORES'
310 DRAN'BH15,145'sPRINTll,'F4 - VER GRA
FICO EN BASIC"
320 DRAN'BH15,160'¡PRINTI1,"F5 - FIN'
330 6OSUB1750
340 ON KEY GOSUB390,430,530,580,600
350 F0RI=lT05sKEYÜ) ONiNEXT
360 U*USR3(U)
370 GOTO370
380 ' VER EN C/H
390 BEEPsPLAY NlIsCLS
400 A=USR1 (A) ¡U=USR3(U)¡ INTERVAL ON
410 IF INKEY$OCHR$(13) THEN 410
420 GOTO 210
430 ' GRABAR
440 BEEPsPLAY f12$:U=USR3(U)
450 LINE(11,91)-(245,179),1,BF
460 DRAM'BH27,130"iPRINTIl, 'PULSA REC/PL
AY Y 'RETURN'"
470 IF INKEY$OCHR$(l3) THEN 470
480 LINE(ll,91)-(245,179),l,BFiDRAH"BH35
,130'sPRINTll, 'GRABANDO 6RAPHIC
490 POKE 39984 !,0
500 BSAVE'GRAPH', 39956!, 56383!, 39956!
510 P0KE39984 ! , 20 1 : BEEP: RETURN 210
520 ' CAHBIAR COLORES
530 BEEP: PLAY H3$:CLS:U=USR1 (U)
540 F0RI=8192T014335:V=VPEEK(I):V= V XO
R 255;VP0KEI,V:NEXT
550 INTERVAL0N¡U=USR3(U)
560 IF INKEYSOCHRtUS) THEN 560 ELSE 21
570 ' VER EN BASIC
580 BEEPsPLAY H4$: CLS: GOTO170
590 ' FIN
600 COLOR 15,4,4sSCREEN 0: KEYQN: END
610 ' HUSICA
620 HU*'V12T255L604CFSA'
630 H2$«"V12T255L605AFGC"
640 H3$='V12T255L603CGFA'
650 H4$»'V12T255L604A6FC"
660 H5$*H1$+H2$+H3$+H4*
670 RETURN
680 ' DATAS
690 ■ LEE COLORES Y CARACTERES
700 DATA71, 8,82,10,65,7,80,2,72,4,73,14,
67,13
710 ' PASA LETRAS A SPRITES
720 DATA 21,0,0,11, 41, B4, 01, 0,B,CD,59,0,
21,41,B4,ll,0,38,01,0,8,CD,5C,0,C9
730 ' PASA DE VRAM A RAH
740 DATA21, 0,0,11, 40,9C,1,0,40,CD,59,0,C
9
750 ' SCREEN 2 + COLOR NEGRO
760 DATA3E,01,32,EB,F3,32,EA,F3,3E,2,32,
a m ú
ss&rJk OOi~h~ OQi~!QC
(«r* / i\UiMni b u
AF,FC,CD,5F,0
770 » PASA DE RAM A VRAH
780 DATA21,40,9C, 11,0,0. 1,0, 40,CD,5C,0,C
9
790 » ESPERA UNA TECLA
800 DATA3E,07,CD,41,01,CB,7F,C2,31,9C,CD
,56,01,C9
810 '
820 ' LECTURA C/H
830 RESTORE 700:FORI«1TO 7¡READ SP ( I ) , CO
(I):NEXT
840 RESTORE 720:FOR 1*40000' TO40024 ! i REA
DWi R*VAL ( a tH " +R$ ) t POKE I , Ri NEXT
830 RESTORE 740iFOR>39943!TO39998! :READ
R$:R=VAL("&H"+R$):POKE I.RsNEXT
860 DEFUSR0*39943 ! : DEFUSR1 -39972 ! s DEFUSR
2=40000 í:DEFUSR3«342
870 SPRITEK0)»CHR$(1B)+CHRI(21)+CHR*(25
5)*CHR$(21)+CHR$(53)+STRIN6$(11,0)*CHR$(
84) *CHRt (84) *CHR$ (255) +CHR$ (84) +CHRt (36)
♦STRIN6$(ll f 0)
880 RETURN
890 ' INSTRUCCIONES
900 COLOR 13. 1, lsSCREEN 0iKEY OFF
910 PRINT: PRINT TAB( 15) "GRAPHIC : PRINT T
AB (15) " "
920 PRINT: PRINT: PRINT: PRINT'Este prograi
a presenta un gráfico de alta resolución
. Al principio se ve- rá realizado en BA
SIC pero después tendrás la opción di
verlo en CODIGO MAQUINA. Coio podrás coi
probar en"
930 PRINT'BASIC se ve todo el desarrollo
del gráfico pero su realización es iu
y lenta. En C/M, sin eibargo, es ins-
tantáneo."
940 PRlNT"Podrás incluso grabar el gráfi
co en C/M y caibiarle todos los colores
■
950 PRINT:PRINT:PRINT"PARA SALIR DEL GRA
FICO PULSA RETURN"
960 LOCATE 1 1 , 22 : PR I NT - pu 1 sa una tecla"
970 PLAY H5*:U*USR3(U)
980 IF INKEY$=" " THEN 980
990 BEEPiF0RI"lT024sPRINTiNEXT
1000 RETURN
1010 ' PRESENTACION
1020 U*USR2(U)
1030 F0RI«lT02sF0RJ»lT07
1040 FOR K=220 TO 185-(6-J)«30 STEP-4iPU
T SPRITE J, (K, K/1.5) ,C0(J) ,SP(J) iNEXT K,
íil
1050 FORI«1TO1000:NEXT
1060 FORI-16TO160SPUTSPRITEB, (32, 1 ) , 15 p
77:PUTSPRITE9, (48, 1 ) , 15, 83i PUTSPRITEli, (
64,I),15,88sFORMTO10iNEXTJ,I
1070 COLOR 1 2 : LOC ATE22 , 2 : PR I NT " Por J.S"
1080 FORI>lTO4000iNEXT
1090 RETURN
1100 ' CADENAS GRAFICAS
1110 A$«"BM0,145UERUE2URUEURE2U2R2UEURER
E2DRDFRF2RD2RFDRDRDR2DD D0RDFE2R2UE 2UR2U
RURE2URERURE2R15;"
1120 B$ S "BH0,50FRD2RFDRDFRDR262LD6DLD62D
L6U18; "
1130 B1*»"BM115,85ERERUE2UEF2DRDFDFGL2DL
62L2ULULUHLU;"
1140 B2I*"BM16S, 140E2R2UE2UR2URURE2URERU
2LHULUHGLGDLDLGLG3L2DLG2D2F2D2RDF2| "
1150 C$""BM115,B5EREHUGLGRD2| H
1160 Cl$ s 'BM20 f 70RERURE2DRFD2GDL2D2L2ULH
ULU2;"
1170 C1$*"BM20,70RERURE2DRFD26DL2D2L2ULH
ULM-1,-2;"
1 180 C2$«"BM175, 85E2RELUH6LDGDFR) "
1190 D$x"BM125,190M+7,-3UH2UE3H-l,+3RF2R
FDM-2, +3L10; N
1200 D1$*"C15BH160, 160FBRFBLDBGGBL2GBR5B
UE;"
1210 E*="BM45,125R8H-3,+4L9E4;"
1220 E1$="BN70, 145M+3,-4M+3,+2D4M-6, +2U4
L8D4R8;"
1230 E2$="C1BM60, 150D2L3U2R3LD2LU2BGR3; "
1240 F$="BM0,145R3DUR2;"
1250 F2$«"C1BM5, 180UR2DUR2DUR2DUR2DUR2DU
R2DUR2D;"
1260 F3*»"CIBM75, 180UM+2, -1DUM+2, -1DBR3B
UUM+2, -1DUM+2, -1DUEDUL2DUL2DUL2DUL j "
1270 GI-"BM223,145UEUH2L2DL2D6DFR3|"
1280 61I'"BM210,145RD4LU4;"
1290 G2I«"BM195,175ER5M+2,*1R2BLBGBR2UBR
F2;"
1300 HM"BH0,145M+4,-lR2H*14,-lR5M+4,+lR
7M+3,-lR9M+3,*lR"
1310 RETURN
1320 ' REALIZA GRAFICO
1330 C0L0R15, i, 1 I SCREEN2 , 2i 608UB87I
1340 DRA1TS20A0;"
1350 CLOSEiOPEN"GRP:"ASIl
1360 LINE(0,0)-(255,190),1,B
1370 LINE(0,191)-(255,19t),l
1380 LINE(0,145)-(255,190),2,BF
1390 DRAW"C2;XH$;":PAINT(20,142),2
1400 LINE(0,0)-(255,15),13,BF
1410 LINE(0,15)-(255,23),B,BF
1420 LINE(0,23)-(255,30),9,BF
1430 LINE (0, 30) - (255, 35) , 10, BF
1440 LINE(0,35)-(255,75),11,BF
1450 CIRCLE(130,65),35,9„,7/5
1460 PAINT(130,65),9
1470 DRAM"C3;XAf;XH«;"
1480 PAINT(75,100),3:PAINT(240,100),3
1490 DRAH*C2)XBt;XBlt;XB2t|"
1500 PAINT(10,75),2:PAINT(150,75),2
1510 PAINT (200, 80) , 2
1520 DRAH'C12;XC$;XC1$;XC2$;"
1530 PAINT(40,75),12jPAlNT(120,75),12
1540 PAINT(1B0,70),12
1550 DRAN"C7}XD$;"sPAINT(170,175),7
1560 DRAW"C15jXDl$j"
1370 DRAM"C8|XE$j"sPAINT(50,135),8
1580 DRAW"C15}XE1I|':PAINT(80,155),15
1590 PAINT(50,150),15
1600 LlNE<70 t 145HB5,l25>,iiPAINT<?I,n
8) ,8:PAINT(80, 127) ,8:DRAN"C1BH70, 145D4; 1
:PSET(104,145),1
1610 CIRCLE(B7,136),3,l, M 1.3iPAINT(87,l
36), 1
1620 DRAW"Cl;XE2$;XF$;XF2f;XF3*;"
1630 DRAW"C12jX6f;":PAINT(220,127),12
1640 DRAW"C8|XG1«|"»PAINT(212,150),8
1650 DRAWC12;XS2»¡-
1660 GOSUB1750
1670 U=USR0(U)
1680 RETURN
1690 ' VISUALIZA 'RETURN'
1700 CF=P0INT(2,2):F0RI«1T02:F0RJ*1T015
1710 COLORJ:PSET(100,2),CF:PRINT»1,"CRET
URN3"
1720 IFINKEY$»CHR$(13) THEN RETURN 210 E
LSE NEXT
1730 NEXT: COLORCF: PSET ( 100, 2) : PRINTil , ST
RIN6$(8,219)
1740 RETURN
1750 PUTSPRITE0,(235,182),15:RETURN
Tests de listados
10
- 58
180
- 88
350
-173
520
- 58
20
- 58
190
-253
360
-219
530
- 75
30
- 58
200
- 58
370
- 10
540
-214
40
- 58
210
- 95
380
- 58
550
- 88
50
- 58
220
-178
390
- 54
560
- 44
60
- 58
230
- 41
400
- 67
570
- 58
70
- 58
240
-103
410
-218
580
-180
80
- 67
250
- 60
420
-105
590
- 58
90
- 81
260
-134
430
- 58
600
-195
100
-183
270
- 93
440
-115
610
- 58
110
-166
280
- 2
450
-215
620
-148
120
-255
290
-203
460
-174
630
-150
130
-210
300
-211
470
- 22
640
-149
140
-144
310
-177
480
- 92
650
-151
150
- 34
320
-175
490
- 72
660
-246
160
-245
330
-119
500
- 74
670
-142
170
-210
340
-206
510
-177
680
- 58
690
- 58
790
- 58
890
- 58
990
- 78
1090
-142
1190
- 88
1290
-184
1390
- 38
1490
-
1590
-108
1690 - 58
700
710
-164
800
- 18
900
- 88
1000
-142
1100
- 58
1200
- 7
1300
-206
1400
-229
1500
-162
1600
- 5
1700 -248
- 58
810
- 58
910
- 44
1010
- 58
1110
- 88
1210
- 83
1310
-142
1410
-247
1510
-177
1610
-169
1710 -195
líV
_ ¿r
03
- 58
oía
-220
1 tina
1020
-218
1120
- 54
1220
-240
1320
- 58
1420
- 7
1520
- 52
1620
- 59
1720 -176
730
- 58
830
- 98
930
-213
1030
-176
1130
- 70
1230
-216
1330
-230
1430
- 18
1530
-178
1630
- 23
1730 -145
740
-255
840
- 2
940
- 27
1040
- 92
1140
-238
1240
-255
1340
- 99
1440
- 64
1540
-155
1640
- 42
1740 -142
750
- 58
850
-101
950
- 63
1050
-105
1150
-175
1250
-210
1350
-206
1450
-100
1550
-227
1650
- 19
1750 - 5
760
- 11
860
- 6
960
-196
1060
- 42
1160
-241
1260
-149
1360
- 68
1460
- 99
1560
- 18
1660
-119
770
- 58
870
-206
970
-124
1070
- 89
1170
-160
1270
- 12
1370
-148
1470
-170
1570
- 70
1670
-216
TOTAL:
7B0
- 9
880
-142
980
-105
1080
- 45
1180
-189
1280
-145
1380
- 26
1480
-113
1580
-220
1680
-142
20298
c
u
A
T
E
O
Programa de juego por Fernando Villanueva Rubio
Entretenida versión del popular juego de las cuatro en raya, en que tendrás
que probar tu habilidad mental contra una máquina que no perdona.
•
*
4»
4S>
10 'iMMunmifmmmui
20 '$ t
30 't PORTADA t
40 'I I
50 'tmmmmmtmttmt
60 CLS:OPEN"grp:"ASIl
70 COLOR 15, 1, IrSCREEN 3,1
80 DRAM"BM40, 0" : COLOR 9: PRINT#1 , "cuatro"
90 DRAW"BM40,8":COLOR 7:PRINTI1,"
100 A$="05L16CDEAAFGABCDFBA6FEDFFGADFC"
110 B$="04L16CDEF6666ABBA6&666FEDC"
120 PLAY A$,B$
130 SPRITE$(0)=CHR$(60)+CHR$(126)+CHR$(2
19) +CHR* (255) *CHR$ (255) +CHR* (231 ) +CHRI ( 1
26)+CHR*(60)
140 FOR X=0 TO 180
150 PUTSPRITE 1,(X,50),4,0
160 NEXT
170 FOR X=0 TO 140
180 PUTSPRITE 2, (X, 50), 10,0
190 NEXT
200 FOR X=0 TO 100
210 PUTSPRITE 3,(X,50),15,0
220 NEXT
230 PLAY A$,B$
240 FOR X=0 TO 60
250 PUTSPRITE 4, (X, 50) , 13,0
260 NEXT
270 DRAWBH95, 75": COLOR 9: PRINT#1 , "por ■
280 DRAWBM95, 84" : COLOR 7:PRINTI1, "_„"
290 DRAW-BM55, 150":COLOR 9:PRINT#1, "fivi
r
300 DRAW U BM55, 158" : COLOR 7:PRINTtl, "
310
320
330
340
350
mmtmtmmtmtm
t t
'* INSTRUCCIONES t
I I
ummmmimtmm
360 FOR N=0 TO 2500: NEXT
370 COLOR 2:CLS:SCREEN 2,1
380 DRAN"BM40,0":PRINTI1, "INSTRUCCIONES"
390 DRAW"Br¡40,3":PRINTtl,"
400 DRAN'BM40,20":PRINTtl,"Éste es un co
nocido juego, que consiste solamente e
n coló car cuatro fichas del lisio co
lor en cualquiera de las direc ciones p
osibles, evitando que el contrario lo
consiga antes."
410 FOR A=0 TO 3500:NEXT
420 CL0SEI1
430 'mtmtmmmtmmm
440 't I
450 'I DIBUJO TABLERO t
460 't t
470 'tllllllllttlIlttflItlIfUII
480 COLOR 15,4,4:CLS
490 OPEN"grp:"FOR OUTPUT ASI1
500 DI M S(7,5)
510 FOR X=0 TO 7:F0R Y=0 TO 5
520 S(X,Y)=0:NEXT
530 LINE(20,35)-(235,35),7
540 LINE(20,180)-(235,180),7
550 LINE(20,35)-(20,180),7
560 LINE(235,35)-(235,180),7
570 PAINT (100, 100) , 7,7
580 LINE(20,180)-(235,180),1
590 LINE(20,35)-(20,180),1
600 LINE(235,35)-(235,180),1
610 LINE(20,35)-(235,35),1
620 FOR X=40 TO 216 STEP 25:F0R Y=50 TO
165 STEP 23
630 BEEP:BEEP
640 CIRCLE(X,Y),8,1:PAINT(X,Y),1
650 NEXT: NEXT
660 Z=0
670 FOR X=30 TO 205 STEP 25:Z=Z+1
680 COLOR 1:PRESET(X, 1 84 ) : PRINTt 1 , Z
690 BEEP: NEXT
700 'mmmmtttmtmmmt
710 't ,
720 't INTRODUCE FICHA t
iKlll ¡I U
730 t t
740 UttUttUttttUttUMtttMtl
750 1=0
760 1=1+1: IF INT(I/2)=I/2 THEN C=6 ELSE
C=12:IF I>48 THEN SOTO 1820
770 CIRCLE ( 127, 20) , 10,C:PAINT( 127, 29), C:
FOR A=0 TO 100:NEXT
780 LINE(117,10)-(137,30),4,BF
790 K$=INKEYI
800 IF K$="" THEN 770
810 K=VAL(Kf)
820 IFK>8 THEN 790
830 IFK<1 THEN 790
840 X=(Kt40)-(K-l)tl5
850 Y=165:H*0
860 FOR N=l TO 6
870 IF P0INT(X,Y)Ol THEN GOSUB 940
880 Y=Y
890 NEXT
900 IF Y<50 BOTO 790
910 PLAY"L20CEGB"
920 CIRCLE<X,Y),8,C:PAINT(X, Y) ,C:60SUB 1
010
930 GOTO 760
940 Y=Y-23:H*H+1
950 RETURN
960 tmmmmmmmmmu
970 '
980 'PRIMERA PARTE DE LA SUBRRUTI NA
DE COMPROBACION
990 '
1000 immtummummmm
1010 IF P01NT(X,Y)=6 THEN S(K-1,H)=1
1020 IF P0INT(X,Y)=12 THEN S(K-1,H)=100
1030 IF P0INT(X,Y)=1 THEN S(K-1,H)=0
1040 IF K<8 AND H<5 THEN 1050 ELSE GOTO
1110
1050 IF S(K-1,H)=S(K,H+1) THEN GOTO 1060
ELSE 60TO 1110
1060 IF K<7 AND H<4 THEN GOTO 1070 ELSE
60TO 1140
1070 IF S(K-1,H)«8(KH,H+21 THEN GOTO 10
80 ELSE GOTO 1140
1080 IF K<6 AND H<3 THEN GOTO 1090 ELSE
60TO 1170
1090 IF S(K-l,H)=S(K+2,H+3) THEN GOTO 11
00 ELSE 60TO 1170
1100 IF S(K-1,H)=1 THEN 60T0 1800 ELSE G
OTO 1810
1110 IF K>3 AND H>2 THEN P=S(K-1,H)+S(K-
2,H-l)*S(K-3,H-2)+S(K-4,H-3) ELSE 60T0 1
240
1120 GOSUB 1720
1130 GOTO 1240
1140 IF K>2 AND H>1 THEN P=S(K,H+1)+S(K-
Í,H)+S(K-2,H-l)+S(K-3,H-2) ELSE GOTO 124
1150 GOSUB 1720
1160 60TO 1240
1170 IF KM AND H>0 THEN P=S(K*1,H+2)*S(
K,H*l)+S(K-i,H)*S(K-2,H-i) ELSE GOTO 124
1180 GOSUB 1720
1190 tmmttmttttmmmtmt
1200 '
1210 'SEGUNDA PARTE DE LA SUBRRUTINA
DE COMPROBACION
1220 »
1230 ummmmmmmmm*
1240 IF K<8 THEN 1250 ELSE 60T0 1310
1250 IF S(K-1,H)=S(K,H) THEN GOTO 1260 E
LSE GOTO 1310
1260 IF K<7 THEN 60T0 1270 ELSE GOTO 134
1270 IF S(K-1,H)'S(K*1,H) THEN GOTO 1280
ELSE GOTO 1340
1280 IF K<6 THEN GOTO 1290 ELSE GOTO 137
1290 IF S(K-1,H)=S(K+2,H) THEN GOTO 1300
ELSE 60TO 1370
1300 IF S(K-1,H)=1 GOTO 1800 ELSE GOTO 1
810
1310 IF K>3 THEN P=S(K-1,H)+S(K-2,H)+S(K
-3,H)+S(K-4,H> ELSE 60T0 1440
1320 GOSUB 1720
1330 GOTO 1440
1340 IF K>2 THEN P=S(K,H)*S(K-l,H)+S(K-2
,H)+S(K-3,H) ELSE 60T0 1440
1350 GOSUB 1720
1360 60T0 1440
1370 IF KM THEN P=S(K*1,H)*S(K,H)+S(K-1
,H)*S(K-2,H) ELSE GOTO 1440
1380 GOSUB 1720
1390 tmmmmmmmumm
1400 '
1410 'TERCERA PARTE DE LA SUBRRUTINA
DE COMPROBACION
1420 '
1430 ummmmnmmmmu
1440 IF K<8 AND H>0 THEN 1450 ELSE GOTO
1510
1450 IF S(K-1,H)=S(K,H-1) THEN GOTO 1460
ELSE GOTO 1510
1460 IF K<7 AND HM THEN GOTO 1470 ELSE
60T0 1540
1470 IF S(K-l,H)=S(K+l,H-2) THEN GOTO 14
80 ELSE GOTO 1540
1480 IF K<6 AND H>2 THEN GOTO 1490 ELSE
GOTO 1570
1490 IF S(K-l,H)=S(K+2,H-3) THEN GOTO 1
500 ELSE 60TO 1570
1500 IF S(K-1,H)=1 THEN GOTO 1800 ELSE
GOTO 1810
1510 IF K=>4 AND H=<2 THEN P=S(K-1,H)+S(
K-2,H+l)*S(K-3,H+2)*S(K-4,H+3) ELSE 50T0
1640
1520 GOSUB 1720
1530 GOTO 1640
1540 IF K>2 AND H<4 THEN P=S(K,H-1)+S(K-
1,H)+S(K-2,H*1)+S(K-3,H*2) ELSE GOTO 164
1550 GOSUB 1720
1560 GOTO 1640
1570 IF KM AND H<5 THEN P=S(K+l,H-2)+S(
K,H-1)+S(K-1,H)+S(K-2,H+1) ELSE GOTO 164
1580 GOSUB 1720
1590 'mmmmmmmsmtm
1600 '
1610 'CUARTA PARTE DE LA SUBRRUTINA
DE COMPROBACION
1620 '
1630 'mmummmmnmuu
1640 IF H>2 THEN P-3(K-l,H)tS(K-i,H-l)*B
(K-l,H-2)+S(K-l,H-3) ELSE RETURN
1650 GOSUB 1720
1660 RETURN
1670 ttuumumnmmmtm
1680 '
1690 'COMPROBACION DE CUATRO IGUALES
1700 '•
1710 uuunmmmmtmtmt
1720 IF P=4 THEN GOTO 1800
1730 IF P=400 THEN GOTO 1810
1740 RETURN
1750 'mmmmmttmmmm
1760 'I t
1770 '! SUBRRUTINA DE GANADOR t
1780 't t
1790 'tmmmmmmmmtm
1800 LINE (20, 0) - ( 125, 20) , 1 1 , BF:DRAN"BM30
, 6" : PRINTil , "GANAN ROJAS" : PLAY"L3205FBFB
FBFBFBFB" : GOTO 1830
1810 LINE(20,0)-(125,20),11,BF:DRAH"BH25
, 6" : PRINTt 1 , "GANAN VERDES" : PLAY"L3205FBF
BFBFBFBFB':G0TO 1830
1820 LINE(20,0)-(170,20),11,BF:DRAW"BM25
,6":PRINTI1,"N0 HAY MAS FICHAS" :PLAY"L32
FBFBFBFBFBFBFB"
1830 FOR A=0 TO 3500: NEXT
1840 CLS: ERASE S
1850 LINE(50,100)-(200,120),11,BF
1860 DRAN"BM60,106"
1870 PRINTI1,"0TRA PARTIDA? S/N"
■
880 CLOSEtl
1890 B$=INKEY$
1900 IF B$="' GOTO 1890
1910 IF B$="N' OR B$=V THEN END
1920 IF B$="S"
LSE GOTO 1890
OR B$=V THEN 60T0 480 E
1
TF.ñT DI T.T8TATM1
10 - 58 190 -131
370 -249
550
- 26
730
- 58
910
-196
1090
- 22
1270
-184
1450
-207
1630
- 58
1810 - 76
20 - 58 200 - 38
380 -170
560
-200
740
- 58
920
-254
1100
-254
1280
- 46
1460
-204
1640
-212
1820 - 95
30 - 58 210 - 87
390 -151
570
-170
750
- 73
930
-145
1110
- 2
1290
-163
1470
- 6
1650
- 89
1830 - 46
40 - 58 220 -131
400 -229
580
-124
760
-199
940
-117
1120
- 89
1300
- 36
1480
-254
1660
-142
1840 -209
50 - 58 230 -184
410 - 46
590
- 20
770
- 67
950
-14?
1130
-115
1310
-125
JO
la i v
JO
18j0 -167
60 - 25 240 -254
420 -233
600
-194
780
-242
960
- 58
1140
-246
1320
- 89
1500
-254
1680
- 58
1860 -186
70 -168 250 - 86
430 - 58
610
- 90
790
- 74
970
- 58
1150
- 89
1330
- 60
1510
-114
1690
- 58
1870 -128
80 - 96 260 -131
440 - 58
620
-152
800
- 26
980
- 58
1160
-115
1340
-117
1520
- 89
1700
- 58
1880 -233
90 - 18 270 -105
450 - 58
630
-186
810
-141
990
- 58
1170
-240
1350
- 89
1530
- 5
1710
- 58
1890 - 65
100 -116 280 - 51
460 - 58
640
-210
820
-222
1000
- 58
1180
- 89
1360
- 60
1540
-140
1720
- 95
1900 - 36
110 -120 290 - 60
470 - 58
650
- 64
830
-217
1010
-238
1190
- 58
1370
-113
1550
- 89
1730
- 1
1910 -203
120 -184 300 -253
480 - 54
660
- 90
840
-176
1020
- 83
1200
- 58
1380
- 89-
1560
- 5
1740
-142
1920 -167
130 -175 310 - 58
490 - 17
670
-143
850
-126
1030
-232
1210
- 58
1390
- 58
1570
-138
1750
- 58
140 -118 320 - 58
500 -132
680
-238
860
-193
1040
-245
1220
- 58
1400
- 58
1580
- 89
1760
- 58
150 - 76 330 - 58
510 -207
690
-125
870
-186
1050
-172
1230
- 58
1410
- 58
1590
- 58
1770
- 58
160 -131 340 - 58
520 - 62
700
- 58
880
-161
1060
-174
1240
- 66
1420
- 58
1600
- 58
1780
- 58
170 - 78 350 - 58
530 - 96
710
- 58
890
-131
1070
-226
1250
- 58
1430
- 58
1610
- 58
1790
- 58
TOTAL:
180 - 81 360 - 79
540 -130
720
- 58
900
-197
1080
-222
1260
-252
1440
- 16
1620
- 58
1800
-254
21583
Programa de juego _
Por fin podréis emular a Balleste:
ordenadores. Este interesante progr«
la necesidad de una buena dosis de
Llistosella
Lte las pantallas de vuestros
Lbina unos buenos gráficos con
ibilidad. Adelante con él.
HOVO 2
PAR
TIRADA N
ü
_
10 'tmtttmmtm
20 'I
30 '!
40 'I
50 'I
60 'i
70 'I
80 'I
90 't
100 't
110 '!
GOLF
por Ll.A.
Llistosella
para
HSX-EXTRA t
120 mmtmtmm
130 '12425 BITS
140 SCREEN2: C0L0R15,1,1
150 DEFSN6A-Z
160 CLS:KEYOFF
170 'DEFINICION DE SPRITES
180 F0RI=1T08: READA
190 A$=A$*CHR$(A):NEXT
200 SPRITE$(0)=A$
210 F0RI=1T08: READA
220 B$=B$+CHR$(A):NEXT
230 SPRITE$(1)=B$
240 F0RI=1T08: READA
250 D$=D$+CHR$(A):NEXT
260 SPRITE$(2)=D$
270 F0RI=IT08:READA
280 E*=E$*CHR$(A):NEXT
290 SPRITE$(3)=E$
300 FOR I=1T0 8: READA
310 F$=F$+CHR$(A):NEXT
320 SPRITE$(4)=F$
330 FOR I=1T0 8-.READ A
340 GI=6$+CHR$(A):NEXT
350 SPRITE$(5)=G$
360 FOR I=1T0 8:READ A
—
DOñQC
370 H*=H$*CHR$(A):NEXT
380 SPRITE$(6)=H$
390 FOR I=1T0 8: READ A
400 J$*J$*CHR$(A):NEXT
410 SPRITE$(7)=J$
420 FOR I=1T0 8: READ A
430 K$=K$+CHR$(A):NEXT
440 SPRITE$(8)=K$
450 FOR I=1T0 8: READ A
460 LI=L$+CHR$(A):NEXT
470 SPRITE* (9) =L$
480 FOR I=1T0 8: READ A
490 H$=H$+CHR$(A):NEXT
500 SPRITE$(10)=H$
510 FOR I=1T0 8: READ A
520 N$=N$+CHR$(A):NEXT
530 SPRITE$(11)=N$
540 FO=1:JR=0:JP=0:GO=70
550 X=200:Y=90:I=1
560 OPEN'SRP: B AStl
570 ttm SELECCION MODO DE JUEGO Y CAB
ECERA
580 SCREEN3
590 FORK=0TO2
600 C=ItK
610 FORI=4T028STEP2
620 'ItttttCABECERA
630 PRESET (1+I+C, 30*11 1.3+Ct 1.3) ¡COLORI/
2:PRINT#1, , 6GLF"
640 NEXTI : NEXTK: FORK=1TO30: COLOR0: PRESET
( 95 , 1 50 ) : PR I NTI 1 , " 60LF ■ : FOR I = 1 TO30 : NE X T I
:C0L0R15:PRESET(95, 150) :PRINTI1, "G0LF':N
EXTK:K=0
650 FORI=1TO2000:NEXT
660 IFV$= , C"ORV$= , c , THEN4190
670 SCREEN0:COLOR13,1,1:LOCATE10,10¡PRIN
T" INSTRUCCIONES ? (S/N)'
680 A*=INKEY$
690 IF A$="THEN680
700 IF A$='N , ORA$=VTHEN720
710 IF A«='S'ORA$="5 , THEN6OSUB3540
720 GOSUB 4190
730 'tSSISIDEF COOR INIC
740 SCREEN2:C0L0R 15,1,1
750 Q=INT((RND(-TIME)tl5)+35)
760 N=INT((RND(-TINE)ll00)+35)
PELOTA
770 IFN>70AND«<100THEN6OTO 760
780 H=Q:N=«
790 E=INT((RND(-TIHE)t50)+110)
800 R=INT ( (RND (-TIHE) 135) +60) ' — COOR.
HOYO
810 Q=INT((RND(-TINE)I50)+100)
820 P=INT((RND(-TIH E)t30)+90) '— C00R.
-COOR.
HOYO EN GREEN
830 THY=INT(RND(-TIHE)tl00)+30
840 ' GENERACION PAR
850 IFE-Q>85ANDE-Q<110THENPAR=4:GOTO 880
860 IFE-QM10THENPAR=5 "
870 IFE-Q<=85THENPAR=3
880 '—-DIBUJO
890 LINE(212,20)-(226,150),11,BF
900 L I NE ( 222 , 40 ) - ( 226 , 40) , 1 : PSET ( 233 , 37 )
:PRINTI1,'0'
910 LINE (222, 95) - (226, 95) , 1 : PSEK233, 95)
:PRINTI1,"60'
920 LINE(222,120)-(226,120),1:PSET(233,1
20):PRINTI1,"80"
930 LINE (222, 140) - (226, 140) , 1 : PSET (233, 1
40):PRINTI1,'100'
940 PSET ( 1 10, 1 ) : PRINTfl , "PAR=» : PSET (142,
1) :PRINT#1,PAR
950 COLORI: PSET (6B, 1 ) : PRINTt 1 ,
' :CO
L0R15, 1, 1
960 PSET(30,1):PRINTI1,'HOYO ':PSET(68,1
):PRINTIl,FO
970 PSET(170,1):PRINTI1, "TIRADA N.':PSET
(233,1):PRINTI1,TI
980 LINE (30,20)-(19B,148),15,B
990 LINE (32,22)-(195, 146) ,3,BF
1000 GOSUB 2910
1010 HX=Q: HY=H
1020 PUT SPRITE 3,(Q,N),C3,3
1030 PUT SPRITE 9,(E,R-10),11,9
1040 PUT SPRITE 1,(H,N),15,1 'BOLA SEGUN
DO JUGADOR
1050 IFJU=1THENC1=8:C3=15:G0T0 1090
1060 IF JU=2 ANDJP=0THENC1=8:C2=15:C3=15
1070 IF JU=2 ANDJPM THENC1=15:C2=8:C3=1
1080 LINE(10,170)-(15,175),15,B:PSET(20,
170) :C0L0RC2:PRINTI1,'J.2 ":C0L0R15, 1, 1
1090 LINE(10,160)-(15,165),15,BF: PSET(2
0,160):COLORCl:PRINTtl,'J.l ":C0L0R15,1,
1
1100 LINE(70,160)-(70,190),11
1110 PSET(10,180):COLOR10:PRINTtl,'N. HO
Y0":C0L0R15,1,1
1120 PUT SPRITE3, (M-10, N-6) , C3, 3
1130 PUT SPRITE 0, (X,Y),15,0
1140 C0L0R15: PSET (2, 87) : PRINTt 1 , *PALO*
1 150 PSET (E-3, R-3) : COLORI : PRINTI1 , ■ • '
1160 LINE(7,97)-(18,108),11,B
1170 'ItltlNICIO DEL BUCLE PRINCIPAL!
1180 IH=IH*2
1190 IF IN>16 THEN IHMM+3
1200 LINE(220,40)-(220,40+IH),l:IF IH>HA
THENIH=l:LINE(220,40)-(220,50*HA),lliLI=
0:GOSUB134«
1210 D=STICK(TJ)
1220 A$=INKEY$:IF P$="THENIH=0:6OSUB333
1230 IF DO0THENGOSUB1390
1240 IFSTRI6(TJ)«-IANDP$O'"THEN6OSUB170
1250 IF A$O ,, THEN1270
1260 GOTO 1180
1270 IF A$='L'THEN HA=100:K1=.6:K2=.4:P$
=*L" :COLORl: PSET (10, 100) : PRINTil , "1": COL
0R7: PSET ( 10, 100) : PRINTtl , P$
1280 IF A$="N'THEN «A=80:K1=1.2:K2=.8:P$
='N' : COLORI : PSET ( 10, 100) : PRINTil , "|" : COL
OR7:PSET(10, 100) ¡PRINTil, P$
1290 IF Af="C'THEN HA=60:K1=1.8:K2=1.2:P
$= , C , :COLQRl:PSET(10,100):PRINTIl, , r:CO
L0R7: PSET ( 10, 100) : PRINTil , P$
1300 M="
1310 GOTO 1180
1320 'IttttlFIN BUCLE PRINC
1330 '— SUBR. INDICADOR TIRO
1340 LINE(217,26)-(221,30),6,BF
1350 FORKL=1TQ100:NEXTKL
1360 LINE(217,26)-(221,30),11,BF
1370 RETURN
1380 '-—SUBR. HOV. CURSOR
1390 IF X*>20 AND X<=200 AND Y*<10 THEN
GOSUB 1490
1400 IF X>200 THEN X=200
1410 IF X=>200AND Y>=10 AND Y=<150THEN 6
OSUB 1540
1420 IF Y>150 THEN Y=150
1430 IF X=>20 AND X<=200 AND Y=>150THEN
GOSUB 1590
1440 IF X<20 THEN X=20
1450 IF X*<20 AND Y>=10 AND Y=<150THEN 6
OSUB 1640
1460 IF Y<10 THEN Y=10
1470 PUT SPRITE 0,(X,Y),15,0
1480 RETURN 1211
m^ : % PDÍÍÍZDOñOC
1490 IF D=3 THEN X=X+10
1510 IF D=7 THEN l»M0
1510 IF D=l THEN X=X+2
1520 IF D=5 THEN X=X-2
1530 RETURN
1540 IF D=3 THEN Y=Y+10
1550 IF D=l THEN Y=Y*2
1560 IF D=5 THEN Y=Y-2
1570 IF D=7 THEN Y=Y-10
1580 RETURN
1590 IF D=3 THEN M-ll
1600 IF D=7 THEN X=X+10
1610 IF D=l THEN X=X-2
1620 IF D=5 THEN X=X+2
1630 RETURN
1640 IF D=3 THEN Y«Y-10
1650 IF D=7 THEN Y=Y+10
1660 IF DM THEN Y=Y-2
1670 IF D=5 THEN Y=Y+2
1680 RETURN
TTS90 ' TIRO Y DIRECCION
1700 IF K1=.6THEN IP=INT(IH-(IH/4)):IX=I
H:IM=0:RF=IP/3:RT=RFt2:RY=RF/2
1710 IF K1=1.2THEN IP=INT(IN-(IH/4)):IX=
IM: IH=0: RF=IP/2. 5: RT=RFt2: RY=RF/4
1720 IF K1=1.8THEN IP=INT < IM- ( IH/4) ) : IX=
IH:IH=0:RF=IP/2:RT=RFt2:RY=RF/2
1730 TI=TI+1:C0L0R13: PSET(223,60):PRINT
•l f INTCIX) t COLORIS, 1 9 1
1740 LINE(228,57)-(255,70),11,B
1750 IF JR=0THEN PUT SPRITE3, (10,200) ,0,
3 ELSEPUT SPRITE7, (10,220), 0,7
1760 IF C3=15THEN C4=l
t770 mm C4*ti
1780 IF JR=0THEN PUT SPRITE2, (Q-7,N-6),C
3,2 ELSEPUT SPRITE8, (Q-8,N-8),C4,8
1790 QX=(X+4)-0
1800 HY«(Y*4W
1810 IF ABS <0X ) >=ABS ( NY ) THENDP=ABS (QX ) EL
SEDP=ABS(MY)
1820 Q7=QX/(DP+lE-03):N7=NY/(DP+lE-03)
1830 F0RI=1T0IP '-—INICIO DEL TIRO
1840 QK=P0INT(Q+2,W+2)
1850 Q=Q+Q7;W=W+«7
1860 IF I >RF AND I < RTTHENS0=S0+K 1
1870 IF KRFTHENSO=SO-Kl
1B80 IF I=RTTHENSO=0
1890 IF DRT-1ANDKRT+1 AND QK=7 OR I >RT
-lAMDKRT+1 AND 0K=14 THEN I=IP:60T0 195
1900 IF I>RT*RYTHENS0=SQ*K2
1910 IF I>RT AND K (RT+RY) THENS0-S0-K2
1920 IF JR*1 THENSO=0:6OTO 1940
1930 PUT SPRITE 12, (O,*), 13,1
1940 PUT SPRITE 1, (Q f N+SO-1) , 15, 1
1950 NEXTI
1960 QK=POINT(Q+2,N+2)
1 970 IFQK=30RQK*70RQK= 14THENT I =TI +1
1980 IF Q>190 THENQ=t90:IP=0:TI=TI+l
1990 IF Q<35 THENQ=35:IP=0:TI=TI+t
2000 IF M<25 THENN>25iIP*ltTI*T!+l
2010 IF N>140 THENN=140:IP=0:TI=TI+1
2020 IFJR=0THENPUT SPRITE3, (Q-10,M-6) ,C3
,3ELSEPUTSPRITE8,(Q-10,N-10),C4,7:6OSUB2
520
2030 IFJRMTHEN PUT SPRITE2, (107,206) ,0,
2ELSEBOSUB2520
2040 COLORI: PRESET(230,60):PRINTI1,'«
2050 PSET(233, 1):PRINT#1,'BB':C0L0R15,
1,1:PSET(233,1):PRINTI1,TI
2060 IFQK=12ANDJR=0JHENIP=0:LINE (220, 40)
-(220,150),11:GOTO 2390' PASO AL 6REE
N
2070 IFQK=1AND9>185ORQK=1ANDQ<40ORQK=1AN
DN>135ORQK=lANDtK30THENIH=0:LINE(220,40)
-(220,150), ll:GOTO 2090
2080 IFQK=1THENIP=0:LINE(220,40)-(220,15
0),11:6OTO 2150' --ACIERTO DESDE EL CAMPO
2090 LINE(220,40)-(220,150),11
2100 LINE(217,26)-(221,30),6,BF
2110 FORKL=1TO100:NEXTKL
2120 LINE(217,26)-(22t,30),U,BF
2130 RETURN
2140 * — SUBR. ACIERTO
2150 FORI=1TO300:NEXT: F0RI=1T031:PUT SP
RITE I, (10,220), 0,1:NEXT
2160 Jfi«0
2170 PSET(70,110):COLORl:PRINTtl,'HAS AC
ERTADO'
2180 FOR 1=1 TO 1000:NEXT
2190 COLORI: PSET(140,1):PRINTI1,W:C
0L0R15, 1, 1
2200 F1=FQ:IF F1>9THENF1=F1-10
2210 COLORll:PSET(6O,180):PRINTtl,Fl:COL
0R15,1,1
2220 IF TKPARTHENKL=13:ELSEKL=15
2230 IFJP=06OTO 2260
2240 PSET(6O,170):CQLORKL:PRINTI1,TI-PAR
i COLORIS
2250 T2T=T2T+TI-PAR:60T0 2290
2260 PSET (60, 160) : COLORKL : PRINTI1 , TI-PAR
¡C0L0R15
2270 T1T=T1WI-PAR
2280 COLORI: PRESET(45,160):PRINTI1,'B
r:COLOR15:PSET(45,160):PRINTIl,TlT:GOTO
2300
2290 IFJP=1THEN COLORI: PRESET(45,170):
PRINTI1,W.COLOR15:PSET(45,170):PRINT
ll,T2T
2300 PRESET ( 233, 1 ) : COLORI : PRINTI1 , ' HT
¡COLORIS, 1,1
2310 LINE (32,22)-(196,146),3,BF
2320 TI=0:X=200:Y=70
2330 IF JP=i THEN F0=F0+1 : 60=60+10: IFFO>
PHTHENFORI=1TO2000:NEXT:6OTO3370
2340 IF JU=1 THEN FQ=F0*1: 60=60*10: IFFO)
PHTHENFORI=1TO2000:NEXT:6OTO3370
2350 IF JU=1 THENJP=0:6OTO 750
2360 IF JP=0THENJP=1:Q=H:N=N:6OTO 890
2370 IF JP=1THENJP=0:GOTO 750
2380 '— - SUBR. ENTRADA 6REENI
2390 FOR1=1TO300:NEXT: FOR 1= IT031 : PUT SP
RITE 1,(10, 220), 0,1:NEXT
2400 JR=1
2410 GOSUB2600
2420 Ol=INT((RND(-TI«E)t40)+20)
2430 Pl=INT((RNDí-TME)t20)+20>
2440 Q=0-01:N=P+P1
2450 GOSUB2520
2460 PUT SPRITE 1, (Q,M , 15, 1
2470 PUT SPRITE10, ( O, P-20 ) , 1 1 , 1
2480 PUT SPRITE11, (G , P- 1 2) , 1 1 , 1 1
2490 CIRCLE(0,P),4,1,,,.5
2500 PAINT(0,P),1
2510 GOTO 1180
2520 ' HOMBRE EN GREEN
2530 PUT SPRITE14, (Q-10,N-22) ,C3,4
2540 PUT SPRITE15,(Q-10,N-14),C3,5
2550 PUT SPRITE16,(Q-10,N-6),C3,6
2560 IF JU=2THEN C4=t5 ELSE C4=l
2570 PUT SPRITE 7, (Q-10,N-6) ,C4,7
2580 IF JPM" "THEN PUT 8PRITE B,(Q,N+1
6),C4,8:F0R 1=1 TO100:NEXT:PUT SPRITE7, (
Q,N+6),C4,7
2590 RETURN
2600 '—DIBUJO GREEN
2610 LINE (30,20)-(198,70),7,BF
2620 LINE (30,20)-(200,70),2,B
2630 LINE (30,70)-(198,148),3,BF
2640 RESTORE3320
2650 FORI=40TO195STEP23
2660 READA
2670 CIRCLEd, A), 30,2,. 8,2.3,1
2680 NEXT
2690 CIRCLE(50,40),10,14,,,.3
2700 PAINT(50,40),14
2710 CIRCLE(55,45),10,14,,,.3
2720 PAINT(55,45),14
^ f / t\üuf\mh iD
2730 CIRCLE(95,30),10,14,,,.3
2740 PAINT(95,30),14
2750 CIRCL£(100,35),10,14,,,.3
2760 PAINT(100,35),14
2770 CIRCLE(108,32),10,14,,,.3
2780 PAINT(108,32),14
2790 LINE (31,71) -(198, 71), 2
2800 PftINT(90,60),2
2810 PAINT(90,90),3
2820 CIRCLE(130,95),50,12,,,.3
2830 PAINT(130,95),12
2840 CIRCLE(110,125),70,12,,,.3
2850 PAINTÍ110, 115) , 12
2860 CIRCLE(50,95),30,12,4.9,6.2,.5
2870 CIRCLE(140,105), 70, 12,5.92,. 14, 1.7'
220,105-3,3.5
2880 PAINTÍ78, 102) , 12
2890 PAINT(170,110),12
2900 RETURN
2910 '--DIBUJO HOYO
2920 LINE (30,20)-(198,148),3,BF
2930 CIRCLE(E,R),35,2,,,.5
2940 PAINT(E,R),2
2950 CIRCLE(E-30,R+10),40,2,,,.3
2960 PAINT(E-45,R+10),2
2970 CIRCLE(E-30,R-10),35,2,,,.3
2980 PAINT(E-45,R-10),2
2990 C1RCLE(E-55,R),25,2,,,.5
3000 PAINT(E-75,R),2
3010 C1RCLE(E+5,R+15),25,2,,,.5
3020 PAINT(E,R+25),2
3030 CIRCLE(E-40,R+5),6,14,,,.3
3040 PAINT(E-40,R+5),14
3050 CIRCLE(M,N+2>,10,2,„.5
3060 PAINT(H,N),2
3070 FQRIM5TO40 STEP-1
3080 CIRCLE(E-20,R), 1,14,5.7,. 6,. 25
3090 CIRCLE(E+5,R), 1-18,14,2,3,. 45
3100 CIRCLE(E+i,R), 1-15,14,4,4.5,. 45
3110 CIRCLE(E,R), 1-10,7,4.5,5.5,. 7
3120 NEXT
3130 CIRCLE(E-45,R-10),20,7,,,.2
3140 PAINT(E-45,R-10),7
3150 CIRCLE(E-20,R-15),15,7,,,.2
3160 PAINT(E-20,R-15),7
3170 CIRCLE(E,R),12,12,,,.4
3180 PAINT(E,R),12
3190 RETURN
3200 DATA57,57, 17, 127, 185, 185,41,41
3210 DATA192,192,192,0,0,0,0,0
3220 DATA112,32,U2,113,63,80,80,144
3230 DATA142,68,46,30,14,10,10,9
3240 DATA60, 60, 60, 24, 60, 126, 255, 189
3250 DATA189,189,212,126,60,60,62,54
3260 DATA118, 118, 118, 118, 198, 198, 198, 198
3270 DATA16,32,32,32,32,64, 64,64
3280 DATA8,4,4,4,4,2,2,2
3290 DATA 240,240,128,128,128,128,128,12
8
3300 DATA 128,240,240,240,240,128,128,12
8
3310 DATA 128,128,128,128,128,128,128,12
8
3320 DATA8f,85,80,75,80,75,80,85
3330 COLQR6:PRESET(120,170)¡PRINTtl,"ES
COJE PALO' : COLOR0: PRESET ( 1 10, 170) : PRINTI
3340 A$=INKEY$
3350 IF A$<>"L"ANDA$<>'N"ANDA$O b C'THEN3
330
3360 RETURN
3370 ' PUNTUACION I RECORD
3380 CLS:FORI=1TO400:NEXT:SCREEN0
3390 IF RE-<T1T AND RE=<T2T THENL0CATE5,
20:PRINT"RECORD=";RE; "PUNTOS ";N0$:6QT0
3430
3400 IF T1KT2T AND TI T< RE THENRE-T1T: P
G=A1:INPUT'N0HBRE DEL JUG. 1";N0$ :L0CAT
E5, 20: PR INT -REC0RD=" ; RE; "PUNTOS ";NO$
3410 '
3420 IF T2KT1T AND T2T<RE THENRE=T2T: P
6=A2:INPUT"N0HBRE DEL JU6. 2";N0I :L0CAT
E5, 20: PRINT"RECORD=" ;RE; "PUNTOS " ; NO$
3430 COLOR 15,1,1: L0CATE1 , 5: PRINT" JUGADO
R 1 HAS ACABADO CQN';T1T; "PUNTOS
3440 IF JU=1 THEN 3470
3450 L0CATE1, 10: PRINT" JUGADOR 2 HAS ACAB
ADO CON" ;T2T; "PUNTOS
3460 IF T1T=T2TTHEN L0CATE5, 15: PRINT'EST
AIS EMPATADOS; HACED OTRA
PARTIDA"
3470 L0CATE1,25:PRINT"PARA CONTINUAR APR
IETA LA t-C-f
3480 V$=INKEY$:IF V$=""THEN3480
3490 G0=7§
3500 IF V$='C"ORV$="c"THENFO=l:JR=0:TlT=
0:T2T=0:TI=0:JP=0:P$="":6OTO740'ttmtl!
nuuxnxxnux 520 CLOSE
3510 GOTO 3480
3520 CLS: END
3530 '«INSTRUCCIONES t
3540 SCREEN2¡FORI=1TO200:NEXT¡ OL=l
3550 IX=100
3560 IF OL =1 THENK1 =. 6:K2=. 4: C0L0R15: P
SET(30,30):PRINTI1,"PALO LARGO (L) BO
TE A 2/3"
3570 IF OL =2 THENK1 M.2:K2=.8:C0L0R13:
PSET (30, 40) : PRINTtl , "PALO NORMAL (N) B
OTE A 3/4"
3580 IF 0L=3THENK 1= 1 . 8 : K2= 1 . 2: COLOR 10: PS
ET (30, 50) : PRINTtl , "PALO CORTO (0 NO
BOTA"
3590 IF 0L>3 THEN3890
3600 C0L0R7 : PSET ( 30 , 1 50 ) : PR I NTI 1 , " T I RADA
MAXIMA DE LOS PALOS"
3610 IFKl=.6THENRF=IX/3¡RT=RFI2¡RY*RF/2
3620 IFKl=1.2THENIX=IX-(IX/5):RF=IX/2.5¡
RT=RFt2:RY=RF/4
3630 IFK1M.8THENIX=IX-((IX/5)$2):RF=IX/
2:RT=RFI2:RY=RF/2
3640 LINE(1,105)-(250,105),12
3650 LINE(100,105)-(100,110),12
3660 LINE(180,105)-(180,110),13
3670 LINE(160,105)-(160,U0),10
3680 LINE(200,105)-(200,110),15
3690 PSET (90, 1 15) : PRINTtl ,
3700 C0L0R15: PSET ( 190, 1 15) : PRINTtl, " 100 a
3710 COL0R13: PSET ( 170, 1 15) : PRINTtl , ■80-
3720 COLOR10: PSET(150, 115) ¡PRINTtl, "60"
3730 PUTSPRITE2, (90,220),0,2
3740 PUT SPRITE3, (90,95),15,3
3750 FORI=1TO400¡NEXT
3760 PUT SPRITE3, (90,220) ,0,3
3770 PUTSPRITE2, (90,95), 15,2
3780 FORIMTOIX
3790 IF I >RFANDKRTTHENSQ=SO+Kl
3800 IF KRFTHENSO=SO-Kl
3810 IF I>RT+RYTHENS0=S0+K2
3820 IF I>RT AND K (RT+RY) THENS0=S0-K2
3830 IFOL-1THEN PUT SPRITE1, (100+1, 100+S
0) ,15,1: GOTO 3860
3840 IF0L=2THEN PUT SPRITE12, (100+1,100+
SO), 13,1 :60T0 3860
3850 IF0L=3THEN PUT SPRITE13, (100+1,100+
SO),10,1:6OTO 3860
3860 NEXT
3870 OL=OL+l
3880 GOTO 3550
3890 K1=0;K2=0 :IX=0:IN=0:RF=0:RT=0:RY=0
:SO=0:OL=0
3900 FOR I = 1 TO 1 500 : NEXT : SCREEN0
3910 SCREEN2; PSET (70, 180) ¡PRINTtl, "PENA
L I Z AC I ONES " : C0L0R7 : PSE T (20,40) ¡PRINTtl,
"LAGO Y " ; : COLOR 14 : PR I NTt 1 , " BUNKER , +2 Y
NO REBOTA"
3920 C0L0R3: PSET(20,60) ¡PRINTtl, "TERREN
O LISO, +2 Y REBOTA'
3930 C0L0R3: PSET ( 20, B0Í : PRINTtl , "FUERA
DEL LIMITE, +2 Y SE PARA"
3940 CIRCLEÍ50, 120) , 10,7, , , .5
3950 CIRCLE (100, 120) , 7, 14, , , . 5
3960 PAINT(50,120),7
©r
/\«J
3970 PAINT(100,120),14
3980 LINE (200,110)-(225,130),3,BF:L1NE<
225,110)-(225,130),l:LINE(226,110)-(228,
130),14,BF
3990 LINE (160,110)-(185,130),3,BF
4000 F0RI*1 TO4000:NEXT
4010 SCREEN2
4020 TC$=-R31G10L6BU3R5H565R5BD3L6H10"
4030 DRAWBH112 f 20A0C7"+TC$
4040 PAINT(114,22),7
4050 DRAtTBH145,23A3C7"+TC$
4060 PAINT(140,28),7
4070 DRA«"BH143,57A2 , +TC$
4080 PAINT(140,56),7
4090 DRA« , BH110,54A1 , *TC$
4100 PAINT(113,50),7
4110 PSET(105,l):PRINTtl,"HORARIO":PSET(
114, 10) :PRINTil, "LENTO"
4120 PSET(93,60):PRINT#1,"ANTIHORARIO":P
SET ( 1 17, 70) : PRINTil , "LENTO" : PSET í 153, 30)
¡PRINTil, "HORARIO":PSET(153,40):PRINTil,
"RAPIDO"
4130 PSET(60,25)¡PRINTtl,"ANTI":PSET(50,
35) :PRINTtl , "HORARIO": PSET (55, 45) :PRINTt
1, "RAPIDO"
4140 C0L0R13: PSET(18, 125) : PRINTil , "LA P
ELOTA SE HUEVE HACIA EL CADDYE, QUE
SE HUEVE CON LAS TECLAS DEL CURSOR
COHO SE INDICA.ELIJ.UEN ROJO INDICA
EL JU6. QUE ESTA JUGANDO. CON
2 JU6. Y JOYSTICK,USAD UN SOLO JQYSTIC
K (EL A O EL 1)
4150 PUT SPRITE 0, (125,100) ,15,0
4160 COLOR10: PSET í 105, 1 12) : PRINTil , "CAD
OYE"
4170 FOR I=1TO9000:NEXT
4180 RETURN
4190 SCREEN0:LOCATE10,1:PRINT"ESCOGE OPC
ION"
4200 LOCATE10,5:PRINT"1 -TECLADO , 1JU6. ,
9 HOYOS'
4210 LOCATE10,7:PRINT"2 -TECLADO ,1JUG.,
18 HOYOS"
4220 LOCATE10,9:PRINT"3 -TECLADO ,2JU6.,
9 HOYOS"
4230 LOCATE10,U:PRINT'4 -TECLADO ,2JU6.
,18 HOYOS"
4240 LOCATE10, 13:PRINT"5 -JOYSTICK. 1JUG.
, 9 HOYOS"
4250 LOCATE10,15:PR1NT"6 -JOYSTICK, 1JUS.
,18 HOYOS"
4260 LOCATE10,17:PRINT"7 -JOYSTICK, 2JU6.
, 9 HOYOS"
4270 LOCATE10, 19:PRINT"8 -JOYSTICK, 2JU6.
,18 HOYOS"
4280 INPUT A
4290 IF A>8 ORA< 1THEN 4280
4300 ON A GOSUB 4320,4330,4340,4350,4360
,4370,4380,4390
4310 A=0: RETURN
4320 TJ=0:JU=1:PH=9 ¡RETURN
4330 TJ=0:JU=1:PH=18:RETURN
4340 TJ=0:JU=2:PH=9 : RETURN
4350 TJ=0: JU=2: PH=18: RETURN
4360 TJ=1:JU=1:PH=9: RETURN
4370 TJ=1: JU=1 : PH=18: RETURN
4380 TJ=1:JU=2:PH=9 : RETURN
4390 TJ=1:JU=2:PH=18 ¡RETURN
TEST DE LISTADO
I
10
- 58
290
-168
570
- 58
850
- 85
1130
-108
1410
- 46
1690
- 58
1970
-105
2250
-209
2530
-237
2810
- 78
20
- 58
300
-192
580
-217
860
- 47
1140
-105
1420
- 62
1700
-179
1980
-183
2260
-197
2540
-231
2820
-253
30
- 58
310
-152
590
-185
870
- 22
1150
- 84
1430
-105
1710
-102
1990
-131
2270
- 4
2550
-227
2830
-130
40
- 58
320
-170
600
-185
880
- 58
1160
-115
1440
- 58
1720
-108
2000
-123
2280
-136
2560
-221
2840
- 27
50
- 58
330
-192
610
-194
890
- 49
1170
- 58
1450
-224
1730
- 36
2010
- 95
2290
-200
2570
-222
2850
-130
60
- 58
340
-154
620
- 58
900
-106
1180
- 31
1460
- 40
1740
-237
2020
- 72
2300
-229
2580
- 77
2860
- 91
70
- 58
350
-172
630
- 98
910
- 72
1190
- 40
1470
-108
1750
- 64
2030
- 97
2310
- 55
2590
-142
2870
-247
80
- 58
360
-192
640
-232
920
-149
1200
-185
1480
- 90
1760
- 96
2040
-138
2320
-204
2600
- 58
2880
- 85
90
- 58
370
-156
650
- 85
930
-250
1210
-195
1490
- 85
1770
- 96
2050
- 2
2330
-146
2610
- 13
2890
2900
-185
100
- 58
380
-174
660
-216
940
-149
1220
-
1500
- 90
1780
-144
2060
-109
2340
-151
2620
-196
-142
110
- 58
390
-192
670
- 45
950
- 26
1230
-166
1510
- 77
1790
-138
2070
-202
2350
- 96
2630
-137
2910
- 58
120
- 58
400
-160
680
- 64
960
-204
1240
-186
1520
- 82
1800
-152
2080
-225
2360
-125
2640
-158
2920
- 87
130
- 58
410
-177
690
-181
970
-247
1250
-244
1530
-142
1810
- 45
2090
-147
2370
- 91
2650
-158
2930
-158
140
-105
420
-192
700
- 40
980
- 27
1260
- 55
1540
- 87
1820
- 44
2100
-188
2380
- 58
2660
-200
2940
- 18
150
- 58
430
-162
710
-206
990
- 54
1270
-155
1550
- 79
1830
-120
2110
-186
2390
-154
2670
-100
2950
-172
160
-144
440
-179
720
- 9
1000
- 4
1280
- 60
1560
- 84
1840
-165
2120
-191
2400
-157
2680
-131
2960
- 74
170
- 58
450
-192
730
- 58
1010
- 1
1290
- 35
1570
- 92
1850
- 96
2130
-142
2410
-205
2690
- 80
2970
-168
180
-192
460
-164
740
-105
1020
-193
1300
-152
1580
-142
1860
-169
2140
- 58
2420
-104
2700
-253
2980
- 75
190
-142
470
-181
750
- 47
1030
-107
1310
- 55
1590
- 86
1870
-215
2150
-154
2430
- 85
2710
- 90
- 7
2990
-204
200
-161
480
-192
760
■196
1040
-146
1320
- 58
1600
- 89
1880
-229
2160
-156
2440
- 67
2720
3000
- 94
210
-192
490
-166
770
- 64
1050
<J
1330
- 58
1610
- 78
1890
- 76
2170
-169
2450
-124
2730
-115
3010
-170
220
-144
500
-181
780
- 91
1060
1340
-188
1620
- 81
1900
-127
2180
-105
2460
-101
2740
• 32
3020
- 43
230
-163
510
-192
790
-145
1070
-128
1350
-186
1630
-142
1910
-166
2190
-135
2470
-123
2750 -
125
3030
-157
240
-192
520
-168
800
810
-151
1080
-109
1360
-191
1640
- 88
1920
- 16
2200
- 1
2480
-117
2760 -
42
3040
- 76
250 -148
530
-183
-145
1090
-147
1370
-142
1650
- 91
1930
-108
2210
-221
2490
-136
2770 -
98
3050
-141
260
-166
540
- 84
820
-174
1100
- 7
1380
- 58
1660
- 80
1940
-252
2220
- 48
2500
- 25
2780 -
15
3060
- 22
270
-192
550
-141
830
-210
1110
-231
1390
-122
1670
- 83
1950
-204
2230
-152
2510
- 55
2790 -
134
3070
-230
280 -150
560
-224
840
- 58
1120
-200
1400
-160
1680
-142
1960
-165
2240
■207
2520
- 58
2800 -
47
3080
-132
rKU
3090
-245
3210
-124
OOOv
lia
"110
3570
-221
o6Y0
-202
701 A
3ol0
"127
3930
-230
a acá
4050
- 86
4170
-201
4/7» -ÍHV
3100
-177
III
3220
-172
l 1 L
"^40
- A4
0*t
0460
-1Z8
3580
-228
3/00
-164
7000.
3b70
( L L
-166
3940
-187
4060
- 70
4180
-142
4300 -163
3110
- 99
3230
-234
3351
3471
ot/ V
-1 AR
100
y con
3590
ni
- 81
3/10
i ai
-101
7Q7fl
3o30
i ai
-101
3950
-241
4070
-224
» < na
4190
na»
-204
nía n
4310 - 9
3120
-131
3240
-141
3360
-142
3480
- 84
3600
-248
3720
- 76
3840
-109
3960
- 72
4080
- 98
4200
- 4
4320 - 27
3130
-125
3250
-199
3370
- 58
3490
-218
3610
-179
3730
- 6
3850
-108
3970
-127
4090
-214
4210
- 55
4330 - 34
3140
- R0
QV
100
■np.ii
0000
¿10
OJD0
"100
3620
-102
3740
-152
3860
-131
3980
- 41
4100
- 65
4220
- 11
4340 - 28
3150
-100
3270
-241
3390
-188
3510
- 60
3630
-108
3750
- 15
3870
- 40
3990
- 20
4110
- 82
4230
- 60
4350 - 35
3160
- ¿0
3280
- 86
3400
-131
3520
- 90
3640
-237
3760
- 8
3880
-130
4000
- 45
4120
- 67
4240
-130
4360 - 28
3170
-127
3290
-134
3410
- 58
3530
- 58
3650
-189
3770
-150
3890
- 38
4010
-216
4130
-232
4250
-181
4370 - 35
31B0
- 26
3300
-124
3420
-135
3540
- 33
3660
- 94
3780
- 70
3900
-111
4020
-131
4140
- 8
4260
-137
4380 - 29
3190
-142
3310
-144
3430
-250
3550
- 3
3670
- 51
3790
-169
3910
-126
4030
- 74
4150
-186
4270
-188
4390 - 36
3200
-152
3320
- 10
3440
-174
3560
- 41
3680
-136
3800
-215
3920
- 29
4040
- 38
4160
- 96
4280
-198 TOTAL: 53385
—
T
I
E
Programa de juego por M. A. Carrero Espinosa
Una buena oportunidad para probar tu puntería. Destruye todos los platos
que aparezcan ante tu visor. Reflejos y buena puntería son condiciones
indispensables en este juego.
- W:
LISTADO DE VARIABLES:
- j $ : Dato que se introduce
mediante el teclado para
utilizar joystick o
teclado.
Si es 1 se juega con el
joystick y si es O se
juega con el teclado.
AS C0) Variable en la que se
construye el sprite del
plato.
A$ Cl)+A$0O+A$C3)+A$C4):
Son las variables con las
que se construye el
sprite del punto de mira.
Dibujo del patrón de los
árboles mediante
DBAW.
Variables utilizadas
como coordenadas de los
ladrillos del muro.
Variables utilizadas
como coordenadas del
punto de mira.
Variable utilizada para
el tiempo.
Variable utilizada para
la dirección de los
cursores o del mando de
juegos.
Posición en columna del
plato.
Linea de salida del plato.
Puntuación.
AS: Dato que se introduce
paravolverono volverá
10 pem mmmnmmm
20 REM i M. A. CARRERO t
30 REM t TIPO I
40 REM t MSX - EXTRA t
50 rem mtmtmmmm
60 REM ti* INSTRUCCIONES tt»
70 COLOR 15,2,2:SCREEN l:KEY OFF
80 LOCATE B,l:PRINT"r
90 LOCATE 8,2: PRINT" !
■i
TIRO
100 LOCATE 8,3:PRINT" 1 "
110 PRINT
120 PRINT"Este juego consiste en di
r a los platos que van saliendo por
ado izquierdo de la pantalla."
spara
el 1
-A$:
-A,B:
-X,Y:
-TI:
-S:
-PP:
-PY:
-SC:
í se iiieaa con el tecla 300 fti ( 4 ) sCHRt ( &HFF ) fCHRí ( ) + C HR $ ( &H 1 ?«a pfm ttt uadtadi ce ttt
130 PRINT: PRINT°Si se juega con el tecla
do, el punto de mira se dirige mediante 1
as teclas del cursor, y se dispara con la
barra espaciadora. 1
140 PRINT:PRINT"Tienes un tie«po detemi
nado para jugar. "
150 PRINT: PRINT"Si quieres detener el 3 u
ego pulsa Fl. *
160 LOCATE 7,22:PRINT"PULSA UNA TECLA"
170 IF INKEY$=" " THEN 170
180 ON KEY GOSUB 1060
190 KEY ( 1 ) ON
200 CLS
210 LOCATE 1,10: INPUT"¿Ut i 1 i zas joystick
(S/N)";J<
220 IF J$='S M OR J$=V THEN W=i ELSE IF
J$='N" OR Ji="n" THEN W=0 ELSE GOTO 210
230 COLOR 1,7, 1:SCREEN 2,2
240 0PEN'GRP:"AS*1
250 REM ttt SPRITES ttt
260 A$(0)=CHR$(iH0)+CHR$(fcH0}+CHR$(?<H7E)
+CHR$ ( &HFF ) +CHR$ ( 4HE7 ) +CHR$ (&H7E) +CHR$ ( i
H0)+CHR$(iH0)
270 At ( 1 ) =CHR$ ( StHF ) +CHR$ í StHlF ) +CHR* ( &H39
) +CHR$(JcH71 ) iCHR$(&HE3)+CHRt (ÍHC1 1 +CHR$ (
iHC9)+CHR$(iHFF)
280 A$ (2) S CHR$ (&HFF) +CHRS (&HC9) +CHRS (͡HC
1 ) +CHR$ ( &HE3) +CHR$ ( 4H7 1 ) +CHR$ ( &H39) +CHR$
(fcMF)*CHR$(iHF)
290 A$ (3) =CHR$ (&HF0) +CHR$(&HF8)+CHP$<?íH9
C)+CHR$(í ! HlE)+CHR$(iHC7)+CHR$(í ( H13)+CHR$
(8tH93)+CHR$(&HFF)
PUNTOS
TIEMPO
:
3 6
300 At (4) =CHR$ (&HFF) +CHR$ (&H93) +CHRS (&H1
3) +CHR$ (ÍHC7) +CHR$ (StHlE) +CHR$ (StH?C> +CHP$
(&HF8)+CHR$UHF0)
310 SPPITE$(0)=A$(0)
320 SPRITE$(1)=A$!1)+A$(2)+A$(3)+A$(4
330 REM ttt PANTALLA ttt
340 A$='S4R3F3D3F3D3G3L4D3L2U3L4H3U3E3U3
E3"
350 LINE(0,140)-(256,160),12,BF
360 LINE(0,160)-(256,192),15,BF
370 FOR A=0 TO 256 5TEP 12
380 FOR B=162 TO 192 STEP 14
390 LINE(A,B)-(A+10.B+5),B,BF
400 NEXT B,A
410 FOR A=5 TO 256 STEP 12
420 FOR B=169 TO 192 STEP 14
430 LINE(A,B)-(A+10,B+5),8,BF
440 NEXT B,A
450 LINE(0,160)-(10,155),15
460 LINE(256,160)-(246,155),15
470 LINE(10,155)-(246,155),15
480 PAINT(10,156),15
490 CIRCLE(50, 1801,100, 12,1, 2.5
500 CIRCLE(195, 1701,120,12,1,2.5
510 PAINTÍ50, 130) , 12
520 CIRCLE(30,30),18,ll
530 PAINT(30,30),11
540 LINE(160,120)-(250,150),1,BF
550 PSET ( 165, 125U: COLOR 15: PRINT#1, "PU
NTOS: "
560 PSETf 165, 135) , 1:PRINT#1 , "TIEMPO: 100"
570 PSET(10,100),0:COLOR 2:DRAW A$:PAINT
(11,1011,2
580 PSET(50,62),0:COLOR 3: DRAH A$:PAINT(
51, 63), 3
590 PSET(120,120),0:COLOP 2:DPAW At:PAIN
T ( 121 , 121 > , 2
600 PSET(130,100),0:COLOR 3:DRAW A$: PAIN
T(131,101),3
610 PSET(200,32),0:COLOR 3:DRAW A$:PAINT
(201, 33), 3
620 PSET (230, 90), 0: COLOR 2:DPAN A$:PAINT
(231,91),2
630 LINE(20,165)-(80,185),15,BF
640 PSET (25, 167) , 15: DRAW"C1S13R1M+1 , +2R1
M+l, -2R1D5L1U3M-1, +2L1M-1, -2D3L1U5"
650 PAINTÍ27, 170), 1
660 PSET(45, 167) , 15: DRAWC1R4D1L3D1R3D3L
4U1R3U1L3U3'
670 PAINTÍ47, 170) , l
680 PSETÍ63, 167) , 15: DRAWC1R1M+1 , +2M+1 , -
2R1M-1, +2D1M+1, +2L1M-1,-2M-1, +2Llf1+l,-2U
lH-1,-2"
690 PAINT(65,169),1
700 REM ttt VARIABLES ttt
710 X=120:Y=50:PP=0:SC=0:TI=1000
720 REM INICIO
730 S=STICK(N)
740 ON STRIG GOSUB 940
750 STPIG(W)0N
760 SPPITE OFF
770 TMH
780 IF TI=INT(TI/100)tl00 THEN PSET'213.
135),0:COLOR 1:PRINT#1, "III": PSET (218. 13
5),0:COLOR ISsPRlNTti, TI/10
790 IF TI/10O0 THEN 1060
800 IF S=l THEN Y=Y-15
810 IF S=3 THEN X=X+15
820 IF S=5 THEN Y=Y+15
830 IF S=7 THEN X=M5
840 IF X<5 THEN X=5
850 IF Y<5 THEN Y=5
860 IF X>235 THEN ¡t=235
870 IF Y>100 THEN Y=100
880 IF PP=0 THEN PY*!NT(RN0(l)t?i)*4«tBE
EP
890 PP=PP+10:IF PP>=260 THEN PP=0
900 IF PPÜ00 THEN PY=PY-3 ELSE IF PP>15
THEN PY=PY+3
910 PUT SPRITE 9,(PP,PY),15,0
920 PUT SPRITE 1,U,Y),1,1
930 60TO 730
940 REM ttt DISPARO ttt
950 SOUND 6,15:S0UND 7,7
960 SOUND 8, 16: SOUND 9,16
970 SOUND !0,16:SOUND 12,16
980 SOUND 13,0
990 PUT SPRITE 1,(X,Y),15,1
1000 ON SPRITE GOSUB 1030
1010 SPRITE ON
1020 RETURN
1030 REM ttt BLANCO ttt
1040 COLOR ,,15:SPRITE OFF:PP=0:SC=SC+10
: PSET (218, 125) , 1 : COLOR t:PRINTil,W:C
OLOR 15:PSET(218, 125) , 1 : PRINTSl , SC: COLOR
ni
1050 GOTO 880
1060 REM ttt INTERRUPCION ttt
1070 STRIG(H) OFF:SCPEEN 1:C0L0R 15,2,2
1080 LOCATE 4,5:PRINT"Has 1 ogrado" ; SC; "p
untos"
1090 LOCATE 0,10:PRINT o cQuieres jugar ot
ra vez?(S/N)"
1100 A$=INKEY$
1110 IF A$="S" OR A$='s" THEN CLOSE:G0TO
70
1120 IF A$="N" OR A$=V THEN END
1130 GOTO 1100
mm
0él ám, é&k Él
TEST DE LISTADO
10
- g
!20
-225
230 -162
340
-246
450
-104
560
-208
670
-113
780
- 85
890
- 22
1000
- i
1110 - 29
2?
-
130
- 20
240 -224
350
- 14
460
-243
570
-173
680
-216
790
- 53
900
-104
1010
- 92
1120 -201
30
- ?
!40
-240
250 - -?
360
- 34
470
- V
580
-184
690
-130
800
-106
910
- 13
1020
-142
1130 -231
i?
-
isá
-246
260 -127
3^0
-194
480
- 74
5=0
-182
700
-
810
-105
920
- "8
1030
-
H
- i
160
- 34
270 -143
390
- 5
490
- 16
600
-164
710
- 9
820
-109
930
-115
1040
-242
60
-
172
- 60
28? -128
300
-i 7 '
500
-171
610
-136
720
-
830
-110
940
-
1050
- 10
71
- ?i
180
- 36
290 -114
400
- 50
510
- 85
620
- 86
730
-139
840
- 32
950
-127
1060
-
9?
- 97
190
-196
300 -130
410
-18"
520
- 38
630
-151
740
-129
850
- 34
960
-139
1070
-217
90
i ■?
t.
200
-159
310 - 3
420
- 12
530
-220
640
-160
750
860
-230
970
-140
1080
- 59
!#l
-103
219
-105
320 - 54
430
-171
540
-113
650
- °3
7 60
-178
870
-218
980
- 29
1090
- 71
TOTAL:
110
-Í4Í
220
-140
330 -
440
- 50
550
-101
660
- 46
770
- 45
880
-198
990
-110
1100
- 64
11708
REGALATE Y DISFRUTA DE II LIBRO
TAL PARA
UN LIBRO PENSADO
PARA TODOS LOS QUE
QUIEREN INICIARSE
DE VERDAD EN LA
PROGRAMACION BASIC
Construcción de programas. El po-
tente editor todo pantalla. Constan-
tes numéricas. Series, tablas y ca-
denas. Grabación de programas.
Gestión de archivo y grabación de
datos. Tratamiento de errores. Los
gráficos del MSX. Los sonidos del
MSX. Las interrupciones. Introduc-
ción al lenguaje máquina.
IAVIEK Gl EKHERO
JOAN C AKI.OS GON/AI IV
9<nii nm itl«idid ¿i (¡«licita
compontt música a una. dos o Ires voces
organiza! tus propios programas de gestión,...
LOS SECRETOS DEL
Y ADEMAS PROGRAMAS
DE EJEMPLO
Alfabético. Canon a tres voces.
Moon Germs. Bossa Nova. Blue
Bossa. La Séptima de Beethoven.
La Flauta Mágica de Mozart. Scra-
ple from the apple & Donna Lee. The
entretainer. Teclee un número. Ca-
lendario perpetuo. Modificación
Tabla de colores SCREEN 1 . Rec-
tángulos en 3-D. Juego de caracte-
res alfabéticos en todos los modos.
Juego Matemático. Más grande más
pequeño. Poker. Breackout. Apoca-
lypse Now. El robot saltarín. El ar-
chivo en casa.
Deseo me envíen el libro Los secretos del MSX, para lo cual adjunto talón de 1.500 ptas. a la orden de
MANHATTAN TRANSFER, S.A. Importante: No se hace contra reembolsos.
Nombre y apellidos
Calle n.° Ciudad CP
Este boletín me da derecho a recibir los secretos MSX en mi domicilio libre de gastos de envío o
cualquier otro cargo.
Importante: Indicar en el sobre MANHATTAN TRANSFER, S.A.
«LOS SECRETOS DEL MSX»
Roca i Batlle, 10-12 Bajos-08023 BARCELONA
INICIACION AL LENGUAJE MAQUINA
DEL HARD AL SOfJ
LAS MEMORIAS DE UN
ORDENADOR MSX
Por J. C. González
Con frecuencia recibimos en esta sección cartas de consulta sobre diversos temas relacionados con el lenguaje
máquina, normalmente no contestamos las cartas de forma individual, sino dentro de nuestro artículo de cada mes,
sin embargo hoy responderemos a las cuestiones que con más frecuencia nos consultáis.
Por razones de espacio desistimos publicar vuestras cartas, pero aquí están las respuestas.
Conocer la estructura interna del
ordenador y la organización de
los procesos que en ella se reali-
zan, es casi imprescindible si programa-
mos en lenguaje máquina.
Cuando compramos un ordenador,
una de las primeras cosas que aprende-
mos son las «K» que tiene, por ejemplo,
podemos adquirir un ordenador de 64K,
48K, 32K, 16K. «K» significa Kilobyte y
equivale a 1 .024 Bytes, éstas son dos
medidas de la capacidad de memoria de
un ordenador, por ejemplo si se trata de
un ordenador de 64K tendremos que
éste tiene 64 * 1024 = 65536 Bytes. A
su vez un Byte se compone de 8 Bits,
que son la representación de los datos
de la memoria interna. De esta manera
tenemos 64 * 1024 * 8 = 524288 Bits,
que son interruptores con todas las
combinaciones posibles de encendido/
apagado. En la práctica empleamos
sólo unidades de Byte.
Los Bytes se ubican en la memoria
RAM del ordenador (Random Access
Memory), siendo esta una memoria de
lectura y escritura o memoria de trabajo.
Los 65536 Bytes de la RAM se nume-
ran desde &HOOOO hasta &HFFFF, el
número que corresponde al Byte es su
dirección, y viene dada normalmente en
una cifra hexadecimal.
Como a cada dirección le correspon-
de un Byte, y un Byte se compone de 8
Bits, es decir que está entre y 255
(&HOO-&HFF), el valor a memorizar
también debe estar dentro de este ámbi-
to, asimismo, la dirección también debe-
rá hallarse entre &HOOOO y &HFFFF.
La memoria RAM sirve para almace-
nar los programas que introducimos en
el ordenador. También existe un espa-
cio en la memoria para almacenar pro-
gramas en lenguaje máquina en las ver-
siones de más de 32K RAM, aunque no
-•
*
se puede acceder a partir del Basic. En
la RAM superior también se hallan algu-
nas rutinas del sistema operativo, p.e.
teclas de función, colores, buffer de en-
trada, etc.
La distribución de la RAM es la si-
guiente: &HOOOO - &HFFFF para pro-
gramas máquina en las versiones de
64K; &H8000 - &HBFFF para los pro-
gramas Basic en las versiones de 32K;
&HCOOO - &HF37F para programas
Basic en todas las versiones; &HF380 -
&HFFFF utilizado por el sistema en to-
das sus versiones.
Se puede limitar el espacio reservado
para programas en Basic mediante el
comando > Clear tamaño del área de
cadenas, dirección <. De esta manera
disponemos del espacio de la dirección
dada en el comando > Clear < hasta
&HF37F para almacenar los programas
en código máquina. Por ejemplo, reser-
vamos > Clear, 200, &HEFFF < el es-
pacio de &HFOOO a &HF37F para el
programa máquina, grabándolo luego a
partir de &HFOOO mediante comandos
> POKE <.
Además de la memoria RAM, existe
51
INICIACION AL LENGUAJE MAQUINA
DEL HARD AL SOFT
otra memoria importante, la ROM (Read
Only Memory) que podría traducirse
como Memoria sólo de lectura, o memo-
ria de valor fijo. En ella se ubican los da-
tos y programas que luego nos permiten
programar en Basic.
La ROM al ser una memoria de valor
fijo, esto es, que en ella se graban datos
y programas en Lenguaje Máquina inal-
terables, se instala en el ordenador en la
fábrica.
Los ordenadores MSX poseen dos
memorias ROM de 1 6K, a veces tres si
se incorpora un programa adicional, cu-
yas direcciones se superponen con las
de la RAM.
Cuando se pone en marcha el orde-
nador la ROM se activa en el espacio de
memoria que va desde &HO a &H7FFF,
y la RAM entre las direcciones &H8OOO
y &HBFFF, aunque en algunas versio-
nes, también se encuentra la ROM con
programas incorporados. Generalmen-
te la RAM siempre se halla en el bloque
superior de 1 6K, entre &HCOOO hasta
&HFFFF, y para la lectura de la RAM in-
ferior, primero tendremos que hacer que
la CPU lea la RAM y luego utilizar las di-
recciones de la ROM.
Las ROM emplean los espacios si-
guientes: ROM I &HOOOO a &H3FFF
para el sistema operativo; ROM II
&H4000 a &H7FFF para el Basic;
ROM III &H8OOO a &HBFFF para el
programa adicional si éste existe.
Otra estructura del ordenador es el
sistema operativo, que se encarga de
los periféricos, la administración de los
datos, su distribución, etc.. En un espa-
cio de la ROM también se ubican las co-
pias de las rutinas del sistema operativo
de la RAM, así cuando encendemos el
ordenador estas rutinas contenidas en
la ROM pasan a la RAM.
Asimismo en la ROM existe la memo-
ria de todos los caracteres y signos, en-
tre &H1BBF y &H23BC. Los comandos
BASIC de la programación externa son
ejecutados por los programas de la
ROM de Basic.
Existe un procedimiento llamado
Bank-Switching que permite al ordena-
dor superar las 64K de memoria direc-
cionable. Los ordenadores MSX tienen
cuatro de estos bancos denominados
«Slot», puesto que son módulos conec-
tables que pueden ser direccionables
mediante este sistema.
Las ROMs con los programas incor-
porados, es decir, con el sistema opera-
tivo y el Basic, son asignados el Slot 0,
asimismo en las versiones de 16K, la
RAM también se incluye en éste Slot,
copándolo totalmente con 64K. En ge-
neral es al Slot 2 el que se asigna a la
RAM. Los módulos enchufables son
asignados a los Slots 1 y 3.
Según la versión del ordenador de-
penderá la asignación de la RAM.
52
En los ordenadores MSX existe un es-
pacio que contiene, para cada modo
gráfico, el contenido de la pantalla, infor-
mación sobre Sprites y colores, que de-
nominamos RAM de vídeo (VRAM) con
1 6K de memoria. El acceso a este espa-
cio RAM se realiza mediante el VDP (Vi-
deo Display Prozessor) y también a tra-
vés de los comandos Basic > VPOKE <
y > VPEEK <
Visto todo esto, podemos concluir que
si todos los Slots están cubiertos el or-
denador posee una memoria de 272K.
APLICACION DE LOS
COMANDOS DE DESPLAZAMIENTO
Las aplicaciones más usuales que se
realizan con los comandos de desplaza-
miento y rotación son las multiplicacio-
nes y divisiones binarias. Veamos pri-
mero como se realiza una multiplicación
en sistema decimal y luego en sistema
binario de dos números de 8 Bits:
101 * 29
202
909
2929
En sistema binario:
101 =&H65 = &B01100101
29 = &H1D = &B00011101
01100101 * 00011101
0110 0101
011 00101
01 100101
1100101
1011 0111 0001 = &HB71 = 2929
Así, la multiplicación de un número
por otro es el resultado de una suma y
un desplazamiento. El desplazamiento
se efectúa anotando cada línea del re-
sultado una debajo de otra y desplazán-
dola una posición a la izquierda. El pro-
grama sería:
10'ORG &HFOOO
20 ' LD B.B
30 'LD A, (FAK1)
40 ' LD E.A
50 ' LD A, (FAK2)
60 ' LD D.O
70 ' LD HL, O
80 ' MULTIP RRCA
90 ' JR NC.NOADD
100' ADD HL, DE
110'NOADD SLA E
120 'RLD
130 'DJNZ MULTIP
140 'LD (RESULT), HL
150 'RET
' FAK1 DB101
' FAK2 DB 29
' RESULT DB 2
'END
160
170
180
190
El indicador de dirección se incremen-
ta en el número indicado. La memoria
así reservada es utilizada en este caso
para almacenar el resultado.
LOS C0MAÜTD0S DE
INTERCAMBIO
Los comandos sencillos de transfe-
rencia de datos vienen dados por LD,
pero además existen otros comandos
que intercambian los contenidos de dos
áreas, estos vienen representados por
los comandos de tipo EX (exchange).
Por ejemplo: EX DE, HL intercambia el
contenido del registro DE con el del re-
gistro HL.
Otro tipo de EX es el de direcciona-
miento indirecto, que intercambia el
contenido de los registros HL, IX o IY
con el contenido superior de la pila, sin
alterar al SP. Su formato es: EX (SP),
HL
Por otro lado, existe una serie de co-
mandos de intercambio que su función
radica en intercambiar entre sí los con-
tenidos de los registros pares. Tene-
mos, por ejemplo, el comando EX
AF.AF' que intercambia el contenido del
Acumulador y del registro flag con sus
correspondientes A' y F'. El comando
EXX intercambia los otros registros pa-
res BC, DE y HL con sus correspondien-
tes BC DE', y HL'.
LOS CUATRO REGISTROS
DE 16-BITs
Hay cuatro registros de 1 6-Bits, que
son: SP, PC, IX.IY.
El registro SP: Se trata de un registro
fijo, esto es, que no puede descompo-
nerse en dos registros de 8-Bits. Este re-
gistro Puntero de pila (SP), sirve para in-
dicar las direcciones en la memoria, en
las cuales existen direcciones de retor-
no, o bien, datos de memoria interme-
dia. La dirección es una posición de me-
moria que está situada en un espacio
RAM llamado Stack o pila.
Cuando encendemos el ordenador el
registro SP se coloca en la dirección
más alta de la pila, esto es, en
&HFOOO. Si tenemos que poner un
Byte en la pila, el SP se reduce en uno,
almacenándose de esta manera ese
Byte en la dirección indicada por el SP.
El registro Sp siempre indica el último
apunte. El proceso también puede reali-
zarse a la inversa.
El registro PC: El PC es un registro
que se administra internamente, indi-
cando la dirección del comando actual.
Este registro no puede ser grabado ni
modificado desde un programa.
Los registros IX/IY: En general se
utilizan para almacenar direcciones o di-
recciones relativas.
REGISTRO INTERRUPT Y
REFRESH
Estos registros pertenecen a la Uni-
dad de Control (CU):
I: Registro Interrupt (Interrupción):
Cuando tiene lugar una interrupción
del programa, este registro de 8-Bits
contiene la parte superior de la dirección
en la que debe realizarse la desviación.
La parte inferior de la dirección viene
dada por el elemento del ordenador que
ha producido la interrupción.
R: Registro Refresh (Refresco):
Es un registro que utiliza el Hardware
como contador para refrescar, a interva-
los regulares, el contenido de la memo-
ria dinámica. De esta manera impedi-
mos que se pierdan las informaciones
memorizadas, mediante la continua re-
carga del mismo contenido de la memo-
ria.
LOS COMANDOS DE CONTROL
Los comandos de control son aque-
llos que modifican o influyen sobre el
modo operativo o el funcionamiento de
la CPU.
NOP = No Operation:
El comando NOP no realiza ninguna
función. Su utilidad radica en proporcio-
nar un retardo intencionado, que en los
ordenadores MSX dura aproximada-
mente un microsegundo. Este comando
NOP también se utiliza para reservar es-
pacio en los programas, resultando lue-
go más fácil la corrección o búsqueda de
errores. Su código de operación es
&HOO.
STOP:
El comando STOP interrumpe todas
las operaciones de la CPU hasta que no
se realice un Reset o un Interrupt.
COMANDOS INTERRUPT
Una interrupción se utiliza general-
mente para ejecutar un proceso, así,
una interrupción nos da el aviso, a partir
de un componente del ordenador, sobre
la entrada a un estado. Por ejemplo, la
espera de los periféricos de Entrada/sa-
lida a la entrada de datos. Un programa
que se esté ejecutando puede ser inte-
rrumpido por un interrupt. Con los orde-
nadores MSX se pueden programar in-
terrupciones a partir del Basic (P.e./ ON
STOP), en estos comandos el interrupt
se activa mediante el reloj interno del
procesador. Cuando se precisa una in-
terrupción, el programa se desviará a la
dirección de inicio del subprograma que
ejecuta las operaciones de interrupción.
Para retornar al programa principal se
utiliza el comando RETI (Return Inte-
rrupt).
Hay que diferenciar las interrupciones
con máscara y las interrupciones sin
máscara, éstas se ejecutan en cualquier
condición, poseyendo máxima priori-
dad. Para retornar al programa principal
usamos el comando RETN.
DI (Disable interrupt) y El (Enable
interrupt):
DI tiene por función el bloqueo de las
interrupciones con máscara, permane-
ciendo en ese estado hasta que el co-
mando El las posibilita nuevamente.
IM0(Modo Interrupción 0):
IM permite el paso del modo 1 al
modo 0. Provocada una interupción
aguarda en modo el comando de un
periférico.
IM1:
Es el modo que aparece cuando co-
nectamos el ordenador. Al provocar una
interrupción en este modo, se desvía
automáticamente a la dirección &H30.
IM2:
En IM 2 (Vector-lnterrupt), se desvía a
una dirección de una tabla de función.
COMANDOS DE ENTRADA
Y SALIDA
El funcionamiento y la eficacia de los
comandos de entrada y salida depen-
den del hadware que se utilice. Como
mínimo cada ordenador utiliza un co-
mando especial E/S IC para establecer
comunicación con los periféricos. El or-
denador tiene un PPI (Programable Pe-
ripherical Interface [8255]), también se
emplean otras denominaciones, como
PIO o PIA. Una parte de los comandos
de E/S funcionan a partir de este compo-
nente, ejecutando luego la comunica-
ción con el teclado, el control de la me-
moria y el cassette. Existen, además,
otros componentes del procesador que
están unidos por conectores E/S, por
ejemplo tenemos el PSG (Programable
Sound Generator) que tiene por función
la generación de sonido y del port del
Joystick, y también el VDP (Video Dis-
play Processor) encargado de producir
la imagen del monitor.
La conexión entre estos elementos in-
dependientes y el Z80 se efectúa me-
diante estos comandos E/S. Son inde-
pendientes en cuanto, por ejemplo, el
VDP emite continuamente la señal de
salida del vídeo, con independencia de
la CPU. Empleando los comandos de E/
S se transfieren datos y comandos, o
bien se reciben de él, a los elementos
del IC.
Para este tipo de conexión se emplea
el concepto interíase. Existen, por tanto
interfases internos (elemento procesa-
dor E/S) y externos (elemento periférico
E/S).
El comando E/S respectivo escribe un
valor en el interfase pertinente, enton-
ces si hay un aparato conectado, el valor
es recibido ejecutándose la acción que
pertoque. En general existen unas 256
direcciones E/S diferentes. La dirección
es la que determina a qué periférico se
tienen que enviar los datos.
En resumen, un comando para que
esté completo necesita de dos accio-
nes, a saber: la primera es la dirección
del port E/S, y la segunda, el valor de los
datos enviados o sino el registro en que
serán almacenados los datos recibidos.
En el comando IN, los datos se leen
del port y se almacenan en el registro
que se indica (la dirección del port se es-
cribe entre paréntesis). El comando
OUT envía los datos indicados al port
que corresponda.
Existen dos tipos de direccionamiento
para los comandos E/S:
-El de direccionamiento inmediato,
cuyo formato es:
OUT(n),A INA,(n)
-Y el de direccionamiento indirec-
to, cuyo formato es:
OUT(C),r INr,(C)
Los comandos análogos en Basic
MSX serían > INP < y > OUT<, siendo
su forma de funcionamiento igual que en
los de lenguaje máquina, aunque mu-
chas funciones solo son posibles a tra-
vés de código máquina.
Podemos, aún, encontrar cuatro co-
mandos más para la entrada y salida de
bloques, que se utilizan parecidamente
a como se emplean los comandos de
transferencia de bloques, siendo HL la
dirección correspondiente en la memo-
ria, C, la dirección del port, y B, la longi-
tud del bloque.
El código &HED es el inicio de los co-
mandos E/S, y son representados por
un código de 2 Bytes, y los comandos de
direccionamiento inmediato por un códi-
go de 1 Byte.
53
THE MOST
AMAZING
MEMORY GAME
El objetivo de este juego es ejercitar
la capacidad de retentiva de los ju-
gadores de cualquier edad, espe-
cialmente de los más niños. Se trata de en-
contrar la pareja de un gráfico determina-
do oculto en un amplio tablero. Pueden in-
tervenir de uno a cuatro jugadores, con lo
cual pueden hacerse partidas muy intere-
santes. El jugador que acierta tiene opción
a intentar destapar una vez más y así has-
ta que pierda. Mientras tanto, el ordena-
dor lleva una estadística de cada jugador
de modo que al final, cuando todas las figu-
ras han sido descubiertas puede estable-
cer quien ha acumulado más puntos.
Si al principio no acertáis no desespe-
réis, pues vais un tanto ciego, pero a medi-
da que se van destapando puedes ir rete-
niendo el lugar donde se encuentran y
aprovechar ¡eso sí! el mínimo error del
contrario. Para ganar no hay que perdo-
nar y menos olvidar. En este juego lo que
importa es la memoria.
Grafismo: correcto.
Conclusión: Si bien es un juego muy común,
su valor radica en que desarroDa la capacidad
de memoria de los jóvenes a la vez que aumen-
ta los reflejos de retención visual.
Precio aproximado: 4.000 pts.
FINDER
KEEPERS
Mastertronic/Drosott
Formato: cassette
tecladoojoystick
ara conseguir un puesto en la «tabla
poligonal» y convertirte además en
caballero de honor, deberás solucio-
POR CLAUDIA TELLO HELBLING
narle un pequeño pero peligroso proble-
ma al rey.
Resulta que el regalo que tenía prepara-
do el rey para su hija lo ha perdido y, sin
saber cómo, ha ido a parar a un castillo
habitado por fantasmas, duendes y otros
seres extraños e incluso hay una zona ha-
bitada por parientes de la reina.
Se da comienzo la aventura una vez que
los vasallos del rey te hayan dejado en el
castillo, dentro deberás recoger todos los
tesoros escondidos por los fantasmas,
ipero cuidado! no dejes que estos seres te
atrapen o te quedarás sin los tesoros con-
seguidos hasta el momento y volviendo al
principio del juego. Antes de poder salir
del castillo habrás de superar dos panta-
llas muy difíciles; una de ellas son los labe-
rintos donde la ventaja es para tus enemi-
gos y es que éstos conocen a la perfección
los laberintos lo que significa que les será
más fácil atraparte.
Otros personajes que aparecen en este
juego son «los compradores de tesoros»
también llamados «sanguijuelas», van
apareciendo a medida que transcurre el
juego, insistentemente para que les ven-
das los tesoros.
Alguno de los tesoros que encuentres
podrían ser mágicos, lo sabrás pronto ya
que éstos se unen entre sí formando un te-
soro mayor pero, pueden tener más o me-
nos valor.
El juego finaliza cuando se han conse-
guido todos los tesoros y han sido entrega-
dos al rey o bien cuando tus oportunidades
para cumplir esta misión se han agotado.
¡Ah! No dejes que los compradores te inti-
miden para traicionar al rey vendiendo
los tesoros y quedándote todo el dinero, no
sería propio de un «caballero».
Sonido: bueno.
Grafismo: muy real.
Conclusión: esunt
BARNSTORMER
Sema
Formato: tarjeta sofcard
Mandos: teclado o joystick
Con este Juego podrás comprobar lo
peligroso que puede ser un rutina-
rio vuelo en avión como es el caso de
éste. Resulta que el copiloto ha pedido per-
miso a la torre para aterrizar pero ésta le
ha concedido tan sólo 5 minutos y medio
para hacerlo.
El capitán del avión ha confirmado a la
torre de vigilancia un pequeño problema;
parece ser que unos globos de aire caliente
se han soltado yendo a parar ala pista des-
tinada a «Romeo», el avión, impidiendo
que pueda aterrizar.
El capitán de «Romeo» ha decidido,
como única solución para efectuar el ate-
rrizaje, utilizar el cargamento de harina
que lleva a bordo y bombardear a los glo-
bos con bolsas de harina.
Una advertencia, no des mucha veloci-
dad al avión ya que si no tienes práctica
podrías perder su control y estrellarte con
algún globo o depósitos de agua instalados
en al aeropuerto.
Cabe la posibilidad que el avión se quede
sin combustible, para que esto no ocurra
en la pantalla tienes un indicador del com-
bustible.
El juego se divide en dos fases:
1. a fase: Lo explicado anteriormente su-
cede durante el día.
2. a fase: Durante la noche. Los globos co-
mienzan a tirar bengalas para indicar el
camino pero al estar mal situados es bas-
tante peligroso, por eso no te acerques de-
masiado a ellos. Este no es el único obstá-
culo también encontraras unos petardos
que explotarán en cualquier momento.
Los puntos se consiguen: al derribar un
globo (250 puntos), al destruir una ben-
gala (725 puntos) o bien al recoger com-
bustible (175 puntos).
Además si dominas los aviones y consi-
gues 10.000 puntos obtendrás un avión
extra. ¡Animo y... aterriza como puedas!
Sonido: oirás el ruido del avión al volar y el
de los disparos.
Graf ismo: bueno.
Conclusión: un juego muy entretenido para
todas las edades pero sobre todo para los mas
«peques».
Precio aproximado: 5.250 pts.
RESCATE
ESPACIAL
Bytebuster/Drosoft
Formato: cassette 64K
Mandos: teclado o jcystáck
Un grupo de astronautas fueron
enviados a la Luna para realizar
unos experimentos pero por moti-
vos desconocidos la nave nodriza ha deja-
do de recibir noticias de ellos, parece ser
que los habitantes de la Luna retienen su
salida.
Tú como capitán de la nave de rescate
debes ir a salvarlos, ellos estarán esperan-
do en las plataformas instaladas en el sa-
télite. En el momento que (tu nave) partes
hacia la Luna una tormenta de meteoritos
te sorprende, haciendo que el camino sea
un verdadero infierno; trata de esquivar-
los antes de que te destrocen la nave. Una
vez que hayas entrado en la órbita lunar
recoge al hombre que está en la platafor
ma e inicia el despegue con mucha cautela
porque por lo visto los «lunáticos» se han
propuesto impedirte la salida con sus na-
ves de combate. Para tu defensa los técni-
cos de la nave nodriza han instalado en el
avión una buena carga de municiones.
Si en el aterrizaje a una de las 9 platafor-
mas deseas reducir velocidad no tienes
más que apretar el botón de disparo, igual-
mente si quieres aumentar velocidad al
despegar.
El juego finaliza cuando te han destruí
do todas las naves de salvamento o bien
consigas salvar a los 9 hombres secues-
trados, siendo asi pasarías a un nivel más
difícil.
Por rescatar a estos hombres recibirás
una gran recompensa y puedes obtener
una buena puntuación destruyendo naves
enemigas.
Sonido: correcto.
Grafismo: bueno.
Conclusión: dentro de los juegos espaciales
éste resulta muy entretenido, ya que permite
desarrollar la habilidad, mientras se mantie-
ión calidad-i
MC.ATTACK
Bytebuster/Drosoft
Formato: cassette 16K
Mandos: teclado o joystick
Teclee: Run"CA8:"
El personaje principal de este juego
es Freddy, más conocido como «el
rey de las hamburguesas». Los de-
más personajes los irás conociendo a me-
dida que transcurra el juego en situacio-
nes no muy agradables para ti sino vas
con cuidado. Los más peligrosos son las
salchichas y los huevos fritos.
El juego consiste en ayudar a Freddy a
completar sus hamburguesas e ir sirvién-
dolas en los platos.
Los Ingredientes de las hamburguesas
están situados en unas barras, cada vez
que Freddy pase por encima de uno de los
ingredientes éste descenderá por la barra
y así sucesivamente hasta llegar al plato.
La misión de las salchichas y los huevos
fritos es impedir que hagas las hambur-
guesas, si uno de estos «locos alimentos»
te toca, el juego comenzará desde el princi-
pio pero se te sumarán los puntos obteni-
dos hasta el momento. La única arma que
tiene Freddy para defenderse es un bote
con una pequeña cantidad de pimienta
que deberá utilizar en situaciones de ver-
dadero peligro; el efecto de la pimienta pa-
ralizadora dura unos segundos.
A medida que vas superando fases, el ni-
vel de éstas irá aumentando; aparecerán
más salchichas, huevos fritos y, sobre
todo, más hamburguesas a completar.
Otra posibilidad de librarte de tus ene-
migos es «incluirlos en el menú» es decir
aplastarlos con algún ingrediente en el
instante que pasen por debajo.
En la parte superior de la pantalla la
computadora te indicará tu puntuación, el
número de Freddys que te queden y la can-
tidad de pimienta.
Preparando muchas hamburguesas ob-
tendrás una buena puntuación y podras
incluirte en la lista de récords de Me. At-
tack.
esa
MacAttack
Sonido: insistente.
Graí ismo: correcto.
Conclusiones: un juego que requiere habili-
dad]
Bytebusters/Drosoft
Formato: cassette 64K
Mandos: teclado o joystíck
Teclee: RUTí "CAS":
Una vez que hayas seguido correcta-
mente las instrucciones de carga
de este emocionante juego apare-
cerá en la pantalla la sala de control del
planeta Drome. En esta sala encontrarás
cuatro salidas a cada lado de la pantalla.
Cada una de ellas te conducirán a un siste-
ma de defensa distinto. Tu misión es des-
truirlos. Por lo tanto los frentes que debes
combatir son los siguientes:
_ ■ fll
I : l¿ - -vi
TANQUES: Se trata de un combate en-
tre los tanques de Drome y los tuyos. Esta
batalla tiene lugar en un laberinto y si tie-
nes la suerte de derribar un tanque habrás
conseguido con ello la destrucción de un
sistema.
CABLES: Dentro de este circuito se en-
cuentra el principal generador de Drome,
que a su vez contiene protones y electro-
nes. Deberás eliminar la mayor cantidad
de protones e impedir que dichos protones
colisionen contigo y logren ionizarte. Si
destruyes una apreciable cantidad de ellos
el generador se sobrecargará y esto te ayu-
dará en la puntuación final.
LA VALVULA: En esta fase entrarás
en la planta en donde se encuentran las
válvulas. iDestruyelas con tu moderna
pistola! -pero vigila la situación con los
láser que las protegen a ambos lados de la
pantalla.
LAS MOTOS DE LA LUZ: Estas motos
van dejando a su paso una sustancia fosfo-
rescente en su recorrido. Intenta que la
moto enemiga se estrelle contra esta sus-
tancia y habrás ganado la partida; pero
POR CLAUDIA TELLO HELBLING
ten cuidado de no caer en la misma tram-
pa y ser tú el que se estrella en tan traido-
ra sustancia. Si deseas que tu moto vaya a
más velocidad aprieta el botón de disparo
o la barra de espacio. Para esta fase ¡Aten-
ci ón se nec esitan buenos reflejos!
PUNTUACION: Los puntos se consi-
guen a medida que vas eliminando los sis-
temas de defensa y si tienes suerte y des-
truyes los cuatro sistemas se te obsequia-
rá con unos (bonos) puntos extras.
Obtendrás una vida extra al llegar a los
10.000 puntos. Por el contrario si los sis-
temas de Drome pueden contigo, en la si-
guiente fase perderás estos pinitos extras
y comenzarás de nuevo.
Como habrás observado esta misión ne-
cesita de alguien muy valiente para que
tenga éxito... ¿Lo eres tú?
Sonido: correcto.
Graüsmo: bueno.
Conclusión: un juego que sale de lo normal.
Sumamente entretenido.
CONFUSED
(EL PUZZLE ELECTRONICO)
Bytebuster/Drosoft
Formato: cassette 64K
Mandos: teclado o joysück
T.cl..,RunW
BOtIHCXMO I (■: • SPIOCBS l_í<IP
PLnxit Deep ot_ue seo
Si te van los rompecabezas aquí te
presento uno muy difícil. Se trata de
formar un puzzle, pero a diferencia
de los puzzles normales y corrientes en
éste las piezas se van moviendo.
El juego tiene varias opciones y depende
de la elección que tú hagas hallarás más o
menos dificultad. Con respecto al tamaño
tienes 6 opciones y también puedes elegir
el dibujo.
A partir de aquí hay dos maneras de ju-
gar: En «NO Competición» y en Competi-
ción que consiste en armar el puzzle antes
de que te quedes sin puntos, porque en el
momento en que comienza la partida és-
tos empiezan una cuenta atrás.
El dibujo del puzzle se encuentra en la
parte izquierda de la pantalla pero tapado
por el Logo «CONFUSED» y para poder ver-
lo deberás elegir la función VIEW que te
maleará la pantalla. Has de saber que al
mirar la pantalla tu puntuación se reduci-
rá un poco.
Si este juego es muy difícil para ti te
aconsejo que elijas la función SUSP y el
juego se paralizará por un momento, así
podrás pensar con mayor tranquilidad.
Otra función que te servirá de ayuda es
HELP, ya que al elegir esta función la pieza
que hayas señalado se colocará correcta-
mente en su sitio, aunque éste se halle
ocupado.
Para elegir una pieza debes guiar la fle-
cha que hay en la pantalla hasta la pieza
que desees y posteriormente apretar el bo-
tón de disparo.
El Juego finaliza cuando has completado
el puzzle en el tiempo indicado.
En el supuesto de que no lo consigas y el
señor tiempo se te haya disparado, sonará
una campanada y se te mostrará el dibujo.
Sonido; correcto.
Graflsmo: bueno.
Conclusión: un juego interesante, pero que
puede resultar complicado las primeras ve-
ces que lo intentes. Te lo :
NORTH SEA
HELICOPTER
Aackosoft
Formato: cassette
Mandos: j
El objeto de este excelente juego de
simulación es el rescate de unos
obreros lanzados al mar por la ex-
plosión de una plataforma petrolífera en
el mar del Norte.
Para efectuar el rescate, el helicóptero
que nosotros gobernamos debe volar a
baja altura sobre cada uno de los náufra-
gos y pulsar una determinada tecla para
subirlos al helicóptero, debiendo efectuar
un viaje para cada uno de los náufragos.
A medida que el juego va evolucionando,
se complican las cosas para poder efec-
tuar los rescates: Las condiciones meteo-
rológicas son cada vez peores.
Aun en el peor de los casos, es decir de
noche, con viento en contra y sin ninguna
visibilidad nuestro excelente helicóptero
nos va a permitir -gracias a su gran canti-
dad de controles así como a los perfecta-
mente inteligibles indicadores de panta-
lla— efectuar el rescate sin mayores pro-
blemas una vez estemos familiarizados
con los controles.
Lógicamente, el problema por defini-
ción con el que se van a encontrar aque-
llos que compren este apasionante juego
va a ser inicialmente el control del heli-
cóptero.
En este videojuego, el control del heli-
cóptero se realiza mediante los dos joys-
ticks simultáneamente mediante un joys-
tick conectado en el port número 1, y las
teclas de cursor o bien con los dos joys-
ticks. ¿Por qué tanto mando? El primero
de los joystícks controla la potencia del
rotor principal y la del de cola, mientras
que el segundo gobierna el ángulo de las
hélices quedando reflejados los movi-
mientos de los dos mandos en los corres-
pondientes indicadores de pantalla. Ade-
más de todo esto, el juego incorpora un
sintetízador de voz (eso sí, en inglés) que
da indicaciones en varios momentos del
juego.
En resumen: se trata de un excelente vi-
deojuego que cuida hasta los detalles más
nimios, con un graflsmo excelente y un
sonido sorprendente.
Sonido: excelente, tanto la voz sintetizada
como la música (tema de M AS E.)
Graflsmo: excelente, muy cuidado.
Conclusión: juego ideal para los amantes de
los juegos de simulación y en general para to-
dos.
Precio aproximado: 2.000 pts.
POR SOLO 800 PTAS.
'••1
s.i.m.o.
SIMONOTICIAS:
Desde el día 14 al 22 de Noviembre se
celebró en Madrid la vigésimo-sex-
ta edición de la Feria Oficial Mono-
gráfica Internacional del Equipo de Ofici-
na y de la Informática SIMO 86.
Siguiendo nuestra línea de trabajo, nos
desplazamos hasta el SIMO 86, sito en el
recinto ferial de la Casa de Campo de Ma-
drid, para poder informar de las noveda-
des más importantes que se presentaron
en la feria.
SIMO 86 es una feria internacional en la
que se reúnen anualmente la mayor parte
de las empresas relacionadas con la infor-
mática. En concreto, este año se han reu-
nido 1.436 expositores sobre una superfi-
cie de 27.174 metros cuadrados, dividida
en 6 palacios (frente a los 4 existentes en
anteriores ediciones).
Una de las innovaciones más interesan-
tes de la presente edición de SIMO ha sido
la instalación, a disposición de los visitan-
tes, de un sistema de información a partir
de unas pantallas gráficas que permitían
la localización de cualquier stand y que
mostraban el camino para llegar a él des-
de el lugar en que se encontrase el usuario.
Todo esto gestionado de un modo muy sen-
cillo desde un teclado.
MAS SOFTWARE
PARAMSX:
INFODIS SOFT ha cedido a DROSOFT,
S.A. la exclusiva para la dis-
tribución en España de los productos
de Aacksofty Eaglesoft. Los primeros jue-
gos que encontramos en el mercado perte-
necientes a estas firmas son: NORTHSEA
HELICOPTER (64 Kb), DROME (64 Kb) y
SPACE RESCUE ( 16 Kb). Se trata de unos
juegos realmente interesantes cuyos pre-
cios oscilan entre las 750 y las 2.000 Ptas.
EDICIONES SM:
Ediciones SM presentó en el SIMO
dos de sus programas educativos
de la serie Protágoras adaptados al
MSX. La serie de programas Protágoras
consiste en un conjunto
Reflexión de b luz
ESPEJOS
PLANOS
educativos que intentan acercar al usua-
rio ciertos hechos científicos (algunos di-
fícilmente observables en un laboratorio).
Cada cassette contiene un tema de Física
con un desarrollo que permite, a quien lo
utilice, una continua interacción con el
ordenador. Además, para cada cassette se
ha elaborado una pequeña revista como
LOS GASES
Ley de Boyte Moriotle
material complementario para una mejor
comprensión de los programas.
Por el momento sólo existen dos títulos
de la serie para los MSX: LOS GASES (Ley
de Boyle-Mariotte) y ESPEJOS PLANOS;
pero se espera que el catálogo se amplié
rápidamente.
Estos programas son comercializados
por Philips a un precio de 1 .200 Ptas.
sobre los antítfuos ftSS * a 8X18 úntala»
CprácticamenS deí» n? at ° s de 8 Puigadat
fleSS 7 P^enta SSSSi? *******
uensidad minio " ^ wri
Pacidad Permite di
58
COMPILADOR
PARA MSX-BASIC
Dynadata presentó
el primer compilador
MSX-BASIC.
Todos aquellos que realicéis progra-
mas con vuestros MSX sabréis que
el BASIC os permite realizar infini-
dad de programas, con gran cantidad de
gráficos, efectos de sonido, etc. Sin duda
las condiciones del BASIC MSX son las
mejores para el desarrollo de juegosy pro-
gramas educativos. Pero... y esto lo saben
muy bien los que han hecho algún juego de
acción en los MSX, el BASIC es un lenguaje
lento. Esta es la razón por la que muchos
se interesen por el lenguaje ensamblador
(código máquina), ya que soluciona el
problema de la velocidad. A cambio resul-
ta mucho más dificil hacer cualquier pro-
grama.
La solución ideal viene de la mano de
Dynadata, con su compilador MSX-BASIC.
El compilador es un programa que tradu-
ce los programas en BASIC a ensambla-
dor, siendo, de este modo, entre 8 y 100 ve-
ces más rápidos los programas. Una vez
compilado el programa se puede grabar
en cinta o disco en formato de código má-
quina. Es un paquete que echábamos a fal-
tar en los MSX.
Unidad de disco de 1500
Kb
Dynadata anunció en la edición de
este año del SIMO la aparición de
una nueva unidad lectora de discos
con capacidad de 1.5Mb (1500 Kb). Esta
lectora puede funcionar con los MSX en
cualquiera de sus sistemas de disco: MSX-
DOS, CP/M o MSX-DISK BASIC. Tiene en su
configuración dos discos de 3.5 pulgadas
con una capacidad de 750 Kb cada uno.
Otro nuevo periférico que aumenta la pro-
fesionaldiad de los MSX.
NUEVO CURSO
DE MSX BASIC
Un nuevo curso de BASIC aparece en
el mercado de la mano de Dynada-
ta. El curso consta de 12 cintas con
24 lecciones de forma que el ordenador se
TOSHIBA HX-20:
Más que un ordenador;
más que una máquina de
escribir
El ordenador MSX Toshiba HX 20
con procesador de textos incorpo-
rado representa una de las muchas
vertientes en que el MSX puede llegar a
ser algo más que un orde
Nada más encenderlo aparece en la pan-
talla una imagen de rascacielos en la pan-
talla. Sólo con presionar cualquier tecla
del teclado aparecerá el menú que permi-
tirá trabajar con el MSX-BASIC o con el
tratamiento de textos. Sí decidimos utili-
zar este último nos encontramos con un
programa tan fácil de usar como una má-
quina de escribir; pero con grandes posi-
bilidades a tu alcance.
¿HOLA?
YO SOV TU
PROFESOR DE
ir^lF"0«r\AT|CA Y
BASIC.
convierta en profesor y herramienta al
mismo tiempo. Pero eso no es todo. Dyna-
data ofrece los siguientes elementos den-
tro del curso de BASIC: ordenador Dyna-
data MSX DPC-200, 12 cassettes que inclu-
yen las 24 lecciones que componen el cur-
so, manual de referencia, evaluaciones pe-
riódicas y DIPLOMA DE FIN DE CURSO
(Autorizado por el Ministerio de Educa-
ción y Ciencia). Una oportunidad inmejo-
rable de entrar en el mundo de la informá-
tica y de los MSX.
MACRGENSAMBLADOR
PARAMSX
Existen numerosos programas en-
sambladores y desensambladores
sobre los MSX; pero muy pocos
pueden ser considerados MACROENSAM-
BLADORES. No se trata de un ensambla-
dor más grande, sino de un compilador de
lenguaje ensamblador que permite añadir
nuevas instrucciones no existentes sobre
el CHIP Z-80, llamadas MACROS. De este
modo se consigue que programar en en-
samblador deje de ser una tarea pesada y
monótona, ya que podemos definir como
MACROS aquellas rutinas más útiles y
usarlas a nuestro antojo. Dynadata ha
lanzado al mercado un nuevo MACROEN-
SAMBLADOR MSX que incluye el listado
de un compilador de Tiny Basic.
PHILIPS: NUEVOS MSX-2
hilíps mostró en el SIMO 86 sus
nuevos ordenadores MSX de la se-
gunda generación (que habían sido
SPECTRAVIDEO GANA LA BATALLA DE
LOS COMPATIBLES:
Spectravideo España, S -A. anunció en
la edición del SIMO del presente año,
la aparición, para principios de
1987 de su nuevo modelo XTRESS 16.
Este nuevo ordenador entra dentro de la
linea de los compatibles IBM; pero impo-
ne una espectacular diferencia: cuenta
con un módulo que le permite utilizar los
programas en cartucho de los MSX. De
este modo Spectravideo consigue unir las
dos diferentes tendencias en el mundo de
loe compatibles. El estándar MSX en el
campo de los ordenadores domésticos y el
estándar de IBM en el campo de los orde-
nadores personales de gestión. Se trata del
primer ordenador compatible MSX e IBM
al mismo tiempo, característica que puede
convertirlo en «best seller». Combina la
potencia y velocidad de los IBM PC (y
compatibles) con los gráficos y la docili-
dad de los MSX de segunda generación
Sus características principales son: Or-
denador basado en el chip de 16 bits 8086,
con 256 Kb de RAM de usuario y 128 Kb de
RAM de video. La versión mínima incluye
teclado separado, una unidad de disco, y
unidad central.
Pero una de sus características más es-
pectaculares es su precio. Una maquina
con esta potencia y versatilidad tiene un
precio muy por debajo que TODOS los
otros compatibles, incluido el compatible
AMSTRAD (que ha causado sensación por
su bajo precio); pero es, además, mas ba-
rato que muchos MSX de la segunda gene-
ración. Un ordenador realmente promete-
dor.
presentados con anterioridad en SONI-
MAG en Barcelona). Los principales mo-
delos son: HOMECOMPUTER NMS 8280
(Video Computer): Puede digitalizar imá-
genes procedentes de una cámara de vi-
deo, un vídeo disco, un video cassette con-
vencional, o cualquier otra fuente de vi-
deo. Genera efectos especiales, como fa-
ding, cortinilla vertical y horizontal, etc.
El modelo NMS 8250 está pensado como
sistema integrado para la gestión, ya que
dispone de teclado separado de la unidad
central y dos unidades de disco de doble
cara de 1 Mb de capacidad cada uno. En to-
tal 2 Mb (2000Kb).
El VG 8235 viene incorporando una
unidad de disco y 256 de RAM (128 para el
usuario y 128 de VRAM).
Por último, el modelo VG 8220 es un
MSX-2 (con 256 Kb de RAM) que no lleva
incorporada la unidad de disco (aunque se
le puede incorporar si se desea), por lo que
resulta mucho más económico.
NORTHSEA HELICOPTER:
LO ULTIMO EN JUEGOS
Aacksoft llega, de la mano de Dro-
soft, a los mercados españoles
con unos espectaculares juegos
de acción. Claro ejemplo de ello es este jue-
go: Northsea Helicopter, que combina una
inmejorable presentación gráfica en tres
dimensiones con impresionantes efectos
musicales y voz sintetizada.
Una explosión en una plataforma petro-
lífera arroja a varios trabajadores heridos
al Mar del Norte. Tú ocupas el lugar del pi-
loto del helicóptero de rescate, y tu misión
es rescatar a todos los heridos antes de
que se ahoguen. Para ello cuentas con un
potente helicóptero, del que puedes con-
trolar gran cantidad de parámetros me-
diante los dos joysticks que precisa el Jue-
go para funcionar. El manejo es similar al
de un helicóptero real, controlando con
un joystick la inclinación de las palas del
rotor, mientras con otro controlas la po-
tencia del motor.
El copiloto te irá indicando, de viva voz,
la situación de los náufragos, así como
otra información que ayude a la consecu-
ción de la partida.
Excepcional juego que puede haceros
pasar muchas horas ante el ordenador. Su
precio es de 2.000 ptas., aproximadamen-
te.
fin
KONAMI INAUGURA
TIENDA
EN MADRID ESTAN
DE ENHORABUENA
El día 14 de Noviembre a las 21 ho-
ras tuvo lugar en Madrid la inau-
guración de la tienda de Konami,
situada en la calle de Francisco Navace-
rrada número 19.
Konami, líder en el mercado español de
los videojuegos da así un nuevo paso al
frente en cuanto a servicio a los usuarios
Con la apertura de este local, de corte eu-
ropeo situado en una céntrica zona de Ma-
drid, los usuarios de esta ciudad van a te-
ner la inmensa suerte de ser los primeros
en poder disponer de las novedades que
presenta constantemente esta firma, con-
tactando directamente con el distribuidor.
Enhorabuena por ello y... ¿Para cuándo
tiendas KONAMI en el resto de España?
EGOS: MAS QUE UN
SISTEMA OPERATIVO
Todos los usuarios de unidades de
disco que utilicen el MSX-DOS (sis-
tema operativo de disco ) se habrán
dado cuenta de la importancia de un buen
sistema operativo. Copiar ficheros, editar-
los, borrarlos o renombrarlos pueden ser
tareas agobiantes o triviales dependiendo
del sistema operativo utilizado.
Philips mostró en la pasada edición del
SIMO el programa EGOS, que, ademas de
satisfacer todas las necesidades de un
buen sistema operativo hará que el uso del
mismo sea cómodo y fácil de aprender, ya
que todas las opciones son controladas
por medio de iconos en la pantalla.
Junto con las opciones clásicas de la
mayoría de sistemas operativos, EGOS
ofrece opciones como las de reloj, calcula-
dora, alarma, agenda de notas, y la posibi-
lidad de imprimir todo cuanto aparezca
por pantalla.
Está preparado para funcionar con los
ordenadores MSX de segunda generación
y su precio es de 4.900 ptas., aproximada-
mente.
Nombre y apellidos
SUSCRIBETE HOY MISMO SI
QUIERESESTARENVANGUAMIA
La primera revista de MSX de España en ta domicilio cada
mes. Por el precio de DIEZ NUMEROS recibirás DOCE.
Además tu condición de suscriptor te da derecho
a descuentos y ofertas especiales en otos productos.
MANHATTAN TRANSFER, S JL
Calle
i Ciudad
N. c
Tel.
Provincia
—
—
Deseo suscribirme a la revista
SUPERJUEGOS EXTRA MSX
a partir del número
FORMA DE PAGO: Mediante talón b an-
earlo a nombre de:
MANHATTAM TRANSFER, SJL
C/. Roca i BatUo, 10-12
08083 Barcelona
— —
Muy Importante: para evitar retraaos en la
recepción de loa números rogamos deta-
lléis exactamente el nuevo numero de los
distritos postales. Gracias.
TARIFAS:
España por correo normal Ptas. 1 .780,-
Buropa correo normal Ptas. 2.000,-
■uropa por avión Ptas. 8.BOO-
América por avión 88 USA *
1
I
P51
RUTINAS DE ENTRADAS DE DATOS:
Una puerta a la seguridad
¿A quién no le ha aparecido alguna vez en pantalla el desagradable mensaje REDO FROM START? ¿Cómo evitarlo?
¿Cómo hacer INPUTs en SCREEN 2?
Uno de los primeros problemas
que nos encontramos al intentar
programar programas de ges-
tión, educativos, o simplemente cual-
quier programa que funcione como
debe hacerlo es el control de las entra-
das de datos. Resulta desesperanzador
ver como, por una tonta equivocación en
la entrada de un valor en un INPUT el
programa se para, o simplemente se
nos estropea la pantalla de presenta-
ción que con tanto trabajo habíamos
realizado, con el horrible mensaje
REDO FROM START.
Evitarlo no es fácil, y nos obliga a de-
sarrollar subrutinas especializadas en la
entrada de datos, que en algunas oca-
siones llegan a ser muy complicadas y
de gran tamaño.
En primer lugar debemos descartar la
instrucción INPUT de todos los progra-
mas que queremos tengan un cierto aire
de profesionalidad. Pero, ¿cómo pode-
mos hacer un INPUT sin hacer un IN-
PUT? La respuesta es el siguiente ar-
tículo, en el que intentaremos conven-
ceros para que utilicéis lo más posible
las rutinas de entrada de datos en vues-
tros programas.
Existen tres instrucciones (casi cua-
tro) que nos permiten explorar el teclado
para saber qué es lo que el usuario ha
escrito en un momento dado. Estas son:
INPUT: Este comando muestra un in-
terrogante en la pantalla y espera a que
el usuario teclee una línea, acabada con
RETURN.- Sólo se puede utilizar en
SCREENS ó 1.
LINE INPUT: Esta variante del INPUT
(no es en realidad otra instrucción dife-
rente) permite que se incluyan comas
dentro de un INPUT (cosa que no se po-
día hacer con un INPUT normal). Su
principal inconveniente es que sólo pue-
den entrarse caracteres y no datos nu-
méricos.
INPUT$ (X): Espera a que se tecleen
x caracteres desde el teclado, sin mos-
trarlos por la pantalla. Se puede utilizar
por tanto en SCREENS 2 y 3, además
de la y la 1 .
INKEYS: Esta instrucción devuelve el
carácter que se estuviese apretando
cuando fue ejecutada la instrucción;
pero devuelve la.cadena nula "" si no se
aprieta ninguna tecla.
Vamos a incluir algunos ejemplos de
utilización de las instrucciones que he-
mos comentado:
INPUT "¿Cómo te llamas";a$
¿Cómo te llamas? WILLY
El ordenador introduce la respuesta
en a$: a$= "WILLY"
INPUT "¿Quién eres";b$
¿Quién eres? WILLY, alias YO
REDO FROM START -El ordenador
no permite la entrada de la coma.
LINE INPUT "¿Quién eres";c$
¿Quién eres WILLY, alias YO
En este caso hemos podido incluir la
coma c$= "WILLY, alias YO" ; pero el or-
denador no ha escrito el interrogante ni
ha dejado el espacio de separación en-
tre preguntas y respuesta.
d$=INPUT$(2)
No aparece nada en pantalla; pero es-
cribo YO y el ordenador hace: d$= "YO"
A$=INKEY$
No aparece nada en pantalla; pero el
ordenador nos ha mostrado ya el Ok. Ha
acabado: a$="" (nada)
En vista de todo esto va a resultar difí-
cil decidirnos por una de ellas. En reali-
dad esta elección se realiza según el
tipo de programa que estemos realizan-
do. Si estamos realizando un programa
de cálculo de ecuaciones en el que no
nos importa la presentación, podemos
utilizar INPUT, que nos facilitará enor-
memente el trabajo.
Si estamos realizando un juego, en el
que nos interesa que la acción no cese,
utilizaremos INKEY$. Por ejemplo, no
interesa que los marcianos se paren y
esperen a que apretemos una tecla.
Finalmente, INPUT$(x) será la utiliza-
da en las entradas de datos de los pro-
gramas profesionales. El formato que
utilizaremos de modo más general será
A$=INPUT$ (1), que puede sustituirse
por una línea con un INKEY$:
xxxxx A$=INKEY$: IF A$="" THEN
GOTO xxxxx
El GOTO puede suprimirse, como en
todas las líneas IF... THEN; pero inclu-
yéndolo en nuestros programas facilita-
mos la lectura posterior del mismo por
otros usuarios, o por nosotros mismos
fi?
más adelante.
En el listado 1 tenéis el bloque central
de la rutina. Intentaremos explicar estas
líneas de un modo sencillo y claro.
La línea 5 inicializa la variable t$.
Pone «nada» dentro de la variable t$
para poder iniciar el proceso. En la va-
riable t$ se almacenará todo lo que ha-
yamos escrito hasta el momento.
La línea 1 espera a que se pulse una
tecla, poniendo en a$ el carácter pulsa-
do. La línea 20 añade a t$ el carácter
que acabamos de pulsar (t$=t$+a$).
La línea 30 muestra en pantalla el ca-
rácter que hemos pulsado, dejando el
cursor a continuación del mismo para
que aparezca en ese punto el siguiente
carácter que tecleemos. La línea 40 cie-
rra el bucle hacia la línea 10, con lo que
el ordenador espera el siguiente carác-
ter, etc.
Evidentemente con esta rutina no ga-
namos nada respecto al INPUT, es más,
el bucle es infinito, con lo que no dejará
nunca de esperar que pulsemos más
caracteres.
Para solucionar este primer inconve-
niente hemos de añadir otra línea que
haga que, al pulsar RETURN (código de
carácter 13), se finalice el bucle, con lo
que no esperará más caracteres. Esta
1 1 nea no es más que la I ínea 1 5 del lista-
do 2. Fijaos que va antes de la línea 20
porque no queremos que añada el carác-
ter RETURN a lo que hayamos escrito.
Un importante inconveniente de
nuestro programa, tal como lo tenemos
ahora, es que no podemos corregir si
nos equivocamos. Para ello hemos de
(como ya os podéis imaginar) añadir
otra línea, que no es más que la línea 1 7
del listado 2. En esta línea comproba-
mos si la tecla apretada es BACKSPA-
CE (BS) (código 8), y si lo es, borramos
el último carácter, tanto de la pantalla
como de t$, para que en esta variable
tengamos un registro fidedigno de lo
que hay escrito en la pantalla. La prime-
ra parte, eliminar de la pantalla es senci-
lla. Recordad que el cursor se encuentra
en el cuadro en que tendría que apare-
cer el siguiente: moverlo hacia atrás un
cuadro, poner un espacio en blanco en
esa posición y volver a retrocederlo un
cuadro. Aunque parezca complicado es
lo que hacéis para corregir un carácter
utilizando las teclas de cursor. Si recor-
dáis que en este caso a$ es el carácter 8
(IF a$=CHR$ (8)...) entenderéis el
PRINT de la línea 17.
La segunda parte consiste en eliminar
el último carácter de t$. para ello hemos
de coger todos menos uno empezando
por la izquierda. Si pensamos que el nú-
mero de caracteres de una cadena vie-
ne especificada por la función LEN, en-
tenderéis la instrucción LEFT$ (T$,
LEN(T$) — 1). Los LEN (t$)— 1 caracte-
res más a la izquierda de t$, es decir, to-
dos menos el último.
Pero el ordenador nos marcará error
si intentamos borrar un carácter antes
LISTADOS
Listado 1.
5 TI= H "
10 A$=INPUT$(1)
20 T$=Tí+A$
30 PPINT A$;
40 GOTO 10
Listado 2.
5 Tl«"
10 A$=INPUT$(1)
15 IF A$=CHR$(13) THEN END
17 IF Ai=CHP$(B) THEN PPINT A$:' ";A$;:T
i=LEFT$(T$,LEN(T*)-l):GOTO 10
20 Tí=T$+A$
30 PRINT Al;
40 GOTO 10
Listado 3.
5 T$=" B
6 L=12
7 PPINT STPINGf (L, " ") ;STRING$(L.3) ;
10 Aí=!NPUT$(l)
15 IF A$=CHR$(13> THEN END
17 IF A*=CHR$f8> AND LENíT$)>0 THEN PRIN
T A$;"_ B :A$;:T$=LEFT$(T$,LEN'T$)-l):G0TO
10
18 IF A$<CHR$(32) THEN GOTO 10
19 IF LEN(T$)=L THEN GOTO 10
20 T$=T$+A$
30 PRINT A$;
40 GOTO 10
Listado 4.
10 '
u ' mmummmtmmmt
12 ' **t EJEMPLO DE USO DE LA ttt
13 ' mmm subrutina tmmt
14 ' mmtmtmtmmmmt
15 '
17 CLS
20 LOCATE 3,10:PP1NT "¿Cómo te llamas? "
30 L=15:G0SUB 60000
40 PRINT: PRINT: PRINT "BIEN. . . ";TS
50 END
60001 ' RUTINA DE ENTPADA DE DATOS
60002 '
60003 T$="
60004 PRINT STPING$(L," ') ;STRING$(L,B) ;
60005 A$=INPUTi(l)
60006 IF A$=CHP$(13) THEN RETURN
60007 IF A$=CHR$(8) AND LEN(T$)>0 THEN P
RINT A*;V;A$::T$=LEFT$(T$,LEN(T$)-1):G
OTO 60005
60008 IF A$<CHP$(32) THEN GOTO 60005
60009 IF LEN(T$)=L THEN GOTO 60005
60010 T$=T$*A$
60011 PRINT A$;
60012 GOTO 60005
Listado 5.
60001 í RUTINA DE ENTRADA DE NUMEROS
60002 '
60003 T$= B "
60004 PPINT STPING$(L,'.");STPING$'L.8»;
60005 A*=INPUT$(1)
60006 IF A$=CHR$(13) THEN PETUPN
60007 IF A$=CHR$(8) AND LEN(T*)>0 THEN P
RINT A$;V;A$::T$=LEFT$íT$.LEN'T*)-!!:G
OTO 60005
60008 IF A$<"0" OP m*F THEN GOTO 6000
5
6000? IF LEN(T$)=L THEN GOTO 60005
60010 T$=T$+A$
60011 PPINT AS:
60012 GOTO 60005
Listado 6.
60001 ' RUTINA DE ENTPADA EN SCPEEN 2
60002 »
' Hay que inicializar antes
' las variables:
Mi Coordenadas del INPUT.
L: Longitud del INPUT.
6000? COLOR 15,4,4
60010 OPEN "GPP:" AS #1
60011 T$="
60012 FOR J=X TO X+(L-1) t6 STEP 6:PRESET
(J,Y):PRINT*1, "_":NEXT ¿
60013 A$=INPUT$(1)
60014 IF A$=CHR$(13) THEN CL0SEI1: RETURN
60015 IF A$=CHR$(B) AND LEN(T$)>0 THEN X
=X-6:LINE(X,YWX+5,Y+8),4,BF:PRESET(X,Y
):PRINTiI,V:T$=LEFT$(T$,LEN(T$)-l):GOT
60013
60016 IF A$<CHP$(32) THEN GOTO 60013
60017 IF LEN ÍT$) =L THEN GOTO 60013 1
60018 Ti=T$+A$
60019 LINE (X.Y)-(X+5,Y+8).4,BF
60020 PRESET(X,Y)
60021 PRINTIl.A*
60022 -X=X+6
60023 GOTO 60013
63
de haber escrito ninguno. ¿Cuáles son
los caracteres más a la izquierda de
"nada"? Hemos de decirle al ordenador
que sólo se puede borrar si ya hay algo
escrito (parece mentira... algo tan evi-
dente...). Esto lo hacemos modificando
la línea 1 7 de la siguiente forma:
17 IF A$=CHR$ (8) AND LEN(T$)
>0 THEN PRINT...
Sólo borrará si pulsamos la tecla de
borrado y hay algo que borrar (T$ tiene
más de cero caracteres).
En este punto la rutina de entrada de
datos es ya plenamente operativa. Ya
hace lo que queríamos; pero somos
muy exigentes y vamos a intentar mejo-
rarla. En primer lugar podemos eliminar
aquellas teclas que no nos interesan (no
nos interesa que el usuario vaya mo-
viéndose por la pantalla con las teclas
del cursor, ni que pueda borrar la panta-
lla por error, etc). En general eliminare-
mos todas aquellas teclas que ejecuten
acciones (borrar pantalla, mover el cur-
sor, etc), que corresponden a los códi-
gos menores a 32. Si deseáis más infor-
mación sobre estos códigos podéis con-
sultar vuestro manual o bien el número
de Navidad de nuestra revista hermana
MSX CLUB. (Las secuencias de esca-
pe).
Esta eliminación se consigue con la lí-
nea 18, que salta a la línea 1 si el códi-
go es menor que el 32, con lo que se es-
perará otro carácter. Esta línea es im-
portante que se coloque tras las otras
verificaciones, ya que la rutina sí debe
aceptar la tecla RETURN (código 13) y
BACKSPACE (código 8).
Podemos añadir también una limita-
ción al número de caracteres, cuyo nú-
mero máximo almacenaremos en la va-
riable L. La línea 19 sería entonces:
19 IF LEN(T$) = L THEN 10
Si la longitud es ya máxima desvía la
ejecución del programa, con lo que los
nuevos caracteres no se añadirá a t$, ni
aparecerán la pantalla.
Podemos indicar también, con símbo-
los de subrayado, el número de caracte-
res a escribir, para que el usuario sepa
cuánto espacio tiene disponible para la
escritura.
En definitiva, todas las ocurrencias
son válidas para desarrollar una buena
rutina de entrada de datos. En ocasio-
nes interesará que sólo admita caracte-
res en mayúsculas, o sólo números, con
lo que habréis de cambiar la línea 18.
Esta es una rutina que, como ya se ha
dicho, admite infinidad de variantes para
cada caso particular. Os adjuntamos va-
rias de estas posibles variantes para
pantallas de texto y gráficos, para entra-
das numéricas, etc; pero esperamos
que a partir de ahora vuestros progra-
mas las incluyan cada vez con mayor
frecuencia.
Observaréis una importante diferen-
cia entre las rutinas que os facilitamos
en las diferentes versiones y la que he-
mos construido paso a paso. En reali-
dad hemos construido un programa.
Convertirlo en un subprograma o subru-
tina es sumamente fácil.
En primer lugar hay que cambiar los
números de línea del programa por
otros lo suficientemente elevados para
que no interfieran con nuestros progra-
mas .(Una posición muy extendida entre
los programadores profesionales es la
línea 60000).
El otro paso a dar es cambiar la ins-
trucción END por un RETURN; ya que
no debe pararse el programa porque
pulsemos la tecla RETURN (no hay que
confundir la instrucción con la tecla del
mismo nombre), sino que debe finalizar
la subrutina y regresar al programa prin-
cipal.
La forma de utilizar estas rutinas que-
da claramente reflejada en el listado 4.
W. Miragall
HARD C0PY
SERIE ORO DE MANHATTAN
Con Hard Copy iniciamos lo que hemos dado en llamar
Serie Oro. A partir del próximo mes ya estará disponi-
ble el primero de los cassettes de aplicación. Con Hard
Copy, desarrollado totalmente en Código Máquina, el
usuario podrá realizar copias en tres formatos diferen-
tes, hacer simulación en blanco y negro de los colores
por degradación de grises, copiar sprites, grabar o
cargar pantallas en cinta, copiar en inverso, redefinir
tonos de colores, etc. Además dispondrá de menús
por ventanas y controlar el Hard mediante cursores o
joysticks. Y lo que es más importante es que es com-
patible con cualquier tipo de impresora.
64
ma "Mciaj.
¡¡¡SONÓ LA FLAUTA!!!
ESTE MES
LANZAMOS
La primera revista de Compact Disc de España
COMPACTA Y DIFERENTE
Totalmente pensada para ¡os usuarios de CD, un concepto
revolucionario en ¡a reproducción del sonido.
Toma nota de nuestro sumario
- CD - La pureza del sonido
- CD - Interactivo
- CD-ROM
- GUIA COMPLETA DE APARATOS COMPACT DISC
- COMPLETO CA TALOGO DE DISCOS
Música clásica y jazz
- LOS 50 CLASICOS IMPRESCINDIBLES
- LOS «TWENTY POPS»
NO ES CASUALIDAD
Otro producto de Manhattan Transfer, S.A.
TODOS LOS PROGRAMAS DEL
JUEGOS:
- C.A.D.
24
- Crazy Labyrinth
22
- Froguer
14
- Juego de los barquitos
23
- Karate night
17
- Misión imposible
22
- Mongolfier
18
- Ogros
22
- Pelotín
15
- Roby Defenser
19/20
- Starman
16
- Sopa de letras
18
-Trigi
21
UTILIDADES:
- Agenda 21
- Calculadora 22
- Calendario Perpetuo 15
- Catál. para cassettes Especial C.M.
- Desensamblador I Especial C.M.
- Desensamblador II Especial C.M.
-Estadística 14
- Generador de miras para TV 23
-Loro 19/20
-Morse 19/20
-Quinielas 14
- Test de adaptación 1 7
- Volcado de pantalla 1 6
MUSICA:
- La fuga n.° 2 (J. S. Bach) 1 4
- Sinfonía de los juguetes 21
EDUCATIVOS:
-Ecuaciones 18
- Funciones circulares 1 6
- Genética 24
- Representación de funci. gráficas 24
GRAFICOS:
- Dibujos simétricos 15
- Hipocicloide 14
Conviértete en el más valiente pilo-
to interestelar. Libra una especta-
cular batalla y atraviesa el hiperes-
pacio. Destruye bunkers, minas
mortales y naves agresoras. Tu des-
treza y tus misiles puedan salvar la
vida de los Hornos tiranizados por
Darus.
STAR RUNNER ES UN JUEGO
SENSACIONAL
Producido por
Manbattan Transfer, S.A.
RocaiBatlle, 10-12
08023 Barcelona
TITULO:—
NOMBRE Y APELLIDOS:
DIRECCION: CODIGO POSTAL:
POBLACION: PROVINCIA:
FORMA DE PAGO: ENVIO TALON BANCARIO □ - CONTRA REEMBOLSO □
YAMAHA
MUSIC COMPUTER
YAMAHA-HAZEN